我的问题是我们可以将Triple DES的密钥长度扩展到512而不是168吗?
如何证明没有512位三重DES,如果我想使用非常安全的算法,我可以在三重DES中使用的最大密钥长度是多少。如何证明密钥大小选择的合理性。
我发现Oracle中的链接将三重DES的密钥大小称为星号*但我不知道这意味着什么?
http://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html
答案 0 :(得分:3)
Triple DES是168位(尽管取决于所选择的选项,密钥(不包括奇偶校验位)实际上可能只有56或112位而不是168位)。无法扩展密钥长度。如果您需要更长的密钥长度,则应使用支持该密钥长度的加密算法。
没有必要"证明"正如您所问,正如标准文件中所描述的那样。
另请注意,到今天的标准,DES被认为非常弱,三重DES被认为相对较弱(尤其是键控选项2和3)。我建议你选择更现代,更强大的算法,比如AES。
答案 1 :(得分:2)
否,因为三重DES表示使用3个不同键的3次DES,或者如果重复使用一个键则使用2个键。因此,位的大小为128位或192位 - 如果将奇偶校验位计为键的一部分,112或168位 - 如果不计算奇偶校验甚至更低的值 - 如果你看一下安全强度3DES。
3DES的关键尺寸不是它的主要弱点。主要的缺点是整个结构有弱键和8字节块大小。此外,3DES比更慢 AES。只是升级密钥大小只会降低性能,对安全性没有太大好处。
Oracle提供程序中的*表示“any”,但*仅存在于显示可以使用的密钥大小的表中,而无需下载无限制加密文件。支持的实际密钥大小are listed for the SunJCE provider。该表显示了用于加密计算的密钥中的实际比特(112& 168);编码仍然是16或24字节。请注意,旧的(呃)Java版本只允许24字节密钥(这意味着如果您有一个16字节的密钥作为输入,则必须进行一些字节复制。)
不要使用DES,除了向后兼容性外,不要使用3DES。