小弟這裡有一個程序,使用的是openssl的庫函數。
使用的解密關鍵函數是這樣:
EVP_DecryptInit(&ctx, aes_256_cbc, key, iv);
EVP_DecryptUpdate(&ctx, masterkey, &masterkey_len1, encrypted_masterkey, encrypted_masterkey_len);
EVP_DecryptFinal(&ctx, masterkey + masterkey_len1, &masterkey_len2);
其中key長度為32字節,iv長度為16字節。
masterkey_len1 為32字節,encrypted_masterkey_len 為48字節。
這裡我就有些不懂了,為什麼加密後的長度為48字節,與加密前的不太一樣。
iv長度為16字節,我是否可以理解成明文長度分組應該是16字節?
但是如果這裡不是16字節,也就是明文分組進行了padding,變成了24字節。那麼就有新問題,iv是16字節,如何與padding後24字節的分組進行的異或運算?
所以我對此有些不解。大致的問題分為以下3個方面:
1、openssl中aes_256_cbc的明文分組長度是多少?
2、是否進行了padding?padding的模式是哪一種?
3、為何加密長度大於了原本明文長度,也就是解密出來的明文為何會小於密文長度?
參考:http://blog.csdn.net/yasi_xi/article/details/13997337
http://blog.csdn.net/chary8088/article/details/21124495