密钥长度无效16字节:在Netbeans中

时间:2014-12-27 06:52:11

标签: java netbeans

我得到无效的密钥长度:netbeans ide上的16个字节,使用以下代码

SecretKey deskey = new SecretKeySpec(keybyte, "DESede/ECB/NOPADDING");
Cipher c1 = Cipher.getInstance("DESede/ECB/NOPADDING");
c1.init(Cipher.ENCRYPT_MODE, deskey);

但是相同的代码在eclipse中的android中运行良好..

1 个答案:

答案 0 :(得分:0)

在我看来,16字节(这意味着128位)无论如何都不是DESede(又称Triple DES)的有效密钥大小,所以我希望这个代码块在运行时失败。我不知道为什么它会像你说的那样在机器人或日食中工作(我自己还没试过)。一项快速研究告诉我,Triple DES的密钥大小为168,112或56位,因此您可能应该将keybyte的大小更改为21,14或7个字节。

另外,你不应该在生产中使用ECB,因为它不安全。对于ECB模式,使用NoPadding也是一个坏主意,因为您无法加密任何长度的明文。有关更多信息,请参阅https://crypto.stackexchange.com/questions/20941/why-shouldnt-i-use-ecb-encryption。我的建议是"AES/CTR/NoPadding"作为密码算法并将IV附加在密文之前。如果您被限制为三重DES,"DESede/CTR/NoPadding"可能适合您。

参考:http://en.wikipedia.org/wiki/Triple_DES