Padding
OpenSSL 填充
我想知道 OpenSSL 算法需要多少填充。
文件說:
所有分組密碼通常使用 PKCS#5 填充,也稱為標準分組填充
這既有資訊又有誤導性。預設情況下,OpenSSL 支持一種流密碼 (RC4) 和多種分組密碼(Blowfish、3DES、AES…)。該
enc
命令(來自命令行工具)將輸入文件加密為特定於 OpenSSL 的格式,帶有自定義標頭(長度為 16 字節),然後是通過所選算法處理的加密數據。對於 RC4,沒有填充:加密數據將與源文件具有相同的長度(但會有額外的 16 字節標頭)。對於分組密碼,它取決於操作模式:
- CBC 和 ECB 模式要求輸入包含整數個塊,因此必須應用填充以確保這一點。PKCS#5 填充(與 PKCS#7 填充相同)添加至少一個字節,最多 255 個字節;OpenSSL 將添加達到塊大小的下一個倍數所需的最小字節數,因此如果塊的大小為 n,則填充將涉及 1 到n 個額外字節(包括)。塊大小取決於算法:Blowfish 和 3DES 使用 8 字節塊,AES 使用 16 字節塊。
- CFB 和 OFB 模式不需要填充,因此沒有應用。