問題背景
使用 OpenSSL EVP_DecryptInit/Update/Final 進行 AES-256-CBC 解密,Key 32 字節,IV 16 字節,明文 32 字節,密文 48 字節,疑惑分組長度、填充模式及 IV 與填充後分組的異或運算。
核心知識點
- 分組長度:AES 固定 128 位(16 字節),與 Key 長度無關。
- 填充:OpenSSL EVP 高級 API 預設使用 PKCS#7 填充(PKCS#5 為 8 字節分組算法專用,AES 用 PKCS#7)。明文 32 字節正好是 2 個分組,無需填充時仍會加一個完整填充分組(16 字節全 0x10),故密文長度 = 48 字節。
- IV 作用:僅用於第一個分組的 CBC 異或,後續分組使用前一個密文分組異或。IV 長度固定等於分組長度(16 字節),與填充後分組大小無關。
參考資料