在AES 加密中新增和刪除PKCS#7 填充的注意事項
在使用ECB 模式(電子密碼本)的AES- 128 加密中, PKCS#7(公鑰加密標準#7)填充通常用於確保待加密的訊息符合AES塊大小,即 128 位元。填充過程涉及向訊息附加特定數量的字節,使其長度可被 128 整除。
要將 PKCS#7 填入加到訊息,請確定所需的填充位元組數。這是透過將當前訊息長度與區塊大小之間的差值加 1 來計算的。新增的填充位元組將由重複字元組成,其 ASCII 值是填充位元組數。例如,如果需要四個填充字節,則字元 0x04(4 的 ASCII 代碼)將重複四次並附加到訊息末尾。
要從解密的訊息中刪除 PKCS#7 填充,檢查解密訊息的最後一個位元組。該位元組指示要刪除的填充位元組數。從解密訊息的長度中減去該位元組的值即可確定實際的訊息長度。然後,從訊息中刪除最後幾個字節,確保刪除的位元組數與最後一個位元組指示的值相符。
有關更詳細的實作範例,請參閱 mcrypt 中提供的使用者貢獻的註釋文檔,其中演示了各種加密演算法(包括 AES)的 PKCS#7 填充的具體實作。值得注意的是,建議不要只是去掉填充字節,而是透過確認它們都具有與最後一個位元組相同的值來驗證它們的正確性。這是針對潛在資料損壞或操縱的基本檢查。
以上是如何在 AES 加密中新增和刪除 PKCS#7 填充?的詳細內容。更多資訊請關注PHP中文網其他相關文章!