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