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