我正在使用DUKPT算法为DES加密算法生成密钥。当您尝试使用弱密钥时,DES的C#实现会引发异常。
DUKPT算法是否可以生成弱密钥,还是避免它们?如果确实生成弱密钥,我该怎么办?
答案 0 :(得分:4)
可能,但非常不可能。 DUKPT算法为每个事务提供唯一的密钥,并且可以设置或不设置任何时间的所有比特,因此它可以生成"弱"所有0的关键。根据你的钥匙的大小,它当然不太可能发生,并且你要小心任意地抛弃"弱"键,因为它也削弱了其他键。
全零键在2 ^(N)中发生1次,其中N是键中的位数,因此对于64位密钥:1 /(2 ^ 64)...不用说,不是常常。由于DUKPT每次交易都会生成一个唯一的密钥,因此您可以正常使用它而无需在DES中检查该情况,因为您可能无论如何都要进行所有16轮。