2024年4月16日发(作者:)
明文填充(padding)
1.如果明文长度不是算法所要求的块长度的整数倍,怎么办?
答:使用填充(Padding)共有5种类型的填充.
方法一:所有的字节均使用一个相同的值进行填充,而这个值是用来表示需
要填充的字节的总个数.相对应的padding模式
有:PKCS5,PKSC7,CMS(Cryptographic Message Syntax),其中PKCS5中Block =
8bytes,而PKCS7 的Block可达(1-255)g特点:对于
Block=8bytes(64bits块)进行填充字节的值的取值范围在[1, 8].解码过程中,
从最后一个字节看起,首先确定它表示的值1<=n<=8,然后检验最后n个字节的值
是否相同,若相同最后删去最后n个字节即可得到完整的信息.特殊情
况:plaintext恰好够分成完整的块,不多不少.则最后8个字节为: (IN HEX)
08 08 08 08 08 08 08 08
方法二:以ox80和ox00构成的字节序列填充,ox80只出现在最前面,且仅仅
只出现一次且必须出现,剩下的字节以0x00填充.
特殊情况:plaintext恰好够分成完整的块,不多不少.则最后8个字节为:
(IN HEX)80 00 00 00 00 00 00 00
方法三:填充序列(除最后一个字节外)均以0x00填充,填充序列的最后一个
字节记录填充序列的长度.特点:与方法一类似,对于Block=8bytes(64bits块)
进行填充字节的值的取值范围在[1, 8].解码过程中,从最后一个字节看起,首先
确定它表示的值1<=n<=8,然后检验最后n个字节剩下的n-1个字节的值是否相
同均为0x00,若相同最后删去最后n个字节即可得到完整的信息.特殊情
况:plaintext恰好够分成完整的块,不多不少.则最后8个字节为: (IN HEX)00
00 00 00 00 00 00 08
方法四:全以0x00填充.
特点: 对于ASCII文本解密过程中0x00(null)无需特殊处理,但对有可能用
到null的.exe文件,就很难处理掉null(由于没有记录填充长度的数据).特殊情
况:plaintext恰好够分成完整的块,不多不少.则无需在最后多添加冗余的8个
字节.
方法五:全以0x20填充
特点: 对于ASCII文本解密过程中0x00(null)无需特殊处理.
特殊情况:plaintext恰好够分成完整的块,不多不少.则无需在最后多添加冗余
的8个字节.另外,Random Padding 可以隐藏数据信息,而填充的地方也不仅仅用
在最后的一块中.
rd == key?
rd直接用于加密?
答:不能
b.如果password不够算法要求的长度怎么办?
答:hash散列,由于常见的hash散列算法,如MD5能把一个任意长度的字符串变
成一定长的十六进制数字串.对于同一种算法而言,而这种转换是唯一对应的,如
第
1
页 共 1 页
空串MD5所对应的计算出来的值MD5("")=d41d8cd98f00b204e9800998ecf8427e
是不会变的,所以从password到key的转换虽然满足了长度要求,但安全性依然
不高.
解决办法是多次进行hash迭代(不少于1000次),同时使用salting(通过随机产
生的字节填充原密码).但一个强有力密码,仍十分的重要.
第
2
页 共 2 页


发布评论