0

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暗号は英数字のみであるはずですか? そうでない場合、なぜその審判はそれを使用することを提案するのですか?

4

1 に答える 1