我得到无效的密钥长度: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中运行良好..
答案 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"
可能适合您。