Javaを使用してDESおよびRSAアルゴリズムを使用して暗号化/復号化する単純なJavaプログラムを作成しています。Java では、関数を使用して暗号化および復号化するためにdoFinal
、メッセージ (プレーン テキスト) をバイトに変換する必要があります。そのために関数を使用しまし.getBytes
た。コードの一部を次に示します。
Cipher desCipher
// Create the cipher
desCipher = Cipher.getInstance("DES/ECB/NoPadding");
desCipher.init(Cipher.ENCRYPT_MODE, myDesKey);
byte[] textEncrypted = desCipher.doFinal(msgBytes);
次に、次のように返します。
return new String(base64Cipher);
この場合、次のような奇妙な文字で暗号化テキストが表示されます。
Encrypted Message: °;zRfwجvë “ëثw‰ڑل7دM#¼7وm‡î¤
一部のインターネット チュートリアルでは、暗号を返す前に Base64 エンコーディングを使用していました 。
次のようにBase64を使用した場合:
byte[] textEncrypted = desCipher.doFinal(msgBytes);
// converts to base64 for easier display.
byte[] base64Cipher = Base64.encodeBase64(textEncrypted);
return new String(base64Cipher);
暗号文は、英字と数字で次のように表示されます。
Encrypted Message: Xz93ODw3gEKm3hziPr0UJ+ed55nWLGpTR9uHjZjLwtg=
どの方法が正しいですか?RSA暗号は英数字のみであるはずですか? そうでない場合、なぜその審判はそれを使用することを提案するのですか?