Java を使用して、DES 暗号化を使用してメッセージを暗号化するおもちゃのプログラムを作成しています。暗号化したいメッセージは次のとおりです。
String msg="This is a secret message";
次のようにバイトに変換します。
byte [] msgBytes=msg.getBytes();
そして、次のように機能する暗号化機能に送信します。
//encryption function
public static String encryptMsg(byte [] msgBytes, SecretKey myDesKey) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException
{
Cipher desCipher;
// Create the cipher
desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
desCipher.init(Cipher.ENCRYPT_MODE, myDesKey);
byte[] textEncrypted = desCipher.doFinal(msgBytes);
// converts to base64 for easier display.
byte[] base64Cipher = Base64.encode(textEncrypted);
return new String(base64Cipher);
} //end encryptMsg
次に、暗号、暗号、および平文の長さを表示すると、次のようになります。
Encrypted Message: FDCU+kgWz25urbQB5HbFtqm0HqWHGlGBHlwwEatFTiI=
Original msg length: 24
Encrypted msg length: 44
元のメッセージの長さが 24 であるのに、暗号の長さが 44 である理由を教えてください。
編集: 親切に、明確な回答が必要です。暗号は常に = で終わります。これはパディングのせいでしょうか?この長さで暗号化が行われる理由/方法を説明できますか? そして常に =? で終わります。私のコードは正しいですか、それとも間違いがありますか? エンコード部分に疑問があります。