安全芯片本身支持各種標準的加密算法,用戶可以使用相應的算法完成數據的加解密、簽名驗簽等功能來完善自己產品的安全性。在數據加解密應用中,數據填充又是其中重要的組成部分。數據填充通常有兩個作用一是按要求將數據補足到要就的塊長度來滿足加密算法的應用需求;二是通過增加填充數據來進一步提高密文的安全性。本次主要介紹分組對稱算法中常用的PKCS7。
PKCS7是當下各大加密算法都遵循的填充算法,且 OpenSSL 加密算法默認填充算法就是 PKCS7。PKCS7Padding的填充方式為當數據長度不足數據塊長度時,缺幾位補幾個幾,eg.對于AES128算法其數據塊為16Byte(數據長度需要為16Byte的倍數),如果數據為”00112233445566778899AA”一共11個Byte,缺了5位,采用PKCS7Padding方式填充之后的數據為“00112233445566778899AA0505050505”。
特別注意的一點是如果是數據剛好滿足數據塊長度也要在元數據后在按PKCS7規則填充一個數據塊數據,這樣做的目的是為了區分有效數據和補齊數據。仍以AES128為例:如果數據為”00112233445566778899AABBCCDDEEFF”一共16個符合數據塊規則采用PKCS7Padding方式填充之后的數據為
“00112233445566778899AABBCCDDEEFF10101010101010101010101010101010”
|