我正在使用Java來製作一個玩具程序,它使用DES加密來加密消息。我要加密的消息是: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
請問您能澄清一下,爲什麼密碼長度是44而原始消息長度是24?
編輯: 好的,我需要澄清的答案。密碼總是以=結尾。這可能是因爲填充?你能向我解釋爲什麼/這個密碼的長度是多少?總是以=結尾? 我的代碼是否正確或出現錯誤?我對編碼部分有疑問。