1

你能帮我吗。

我开发了一个 iOS 应用程序。我尝试使用 3DES 算法加密字符串,但发现与 Java 代码不同的结果。密钥应为 md5,大小为 24 字节。我的朋友用 Java 加密了明文,他得到了一个加密的 base64 字符串。但我得到不同的结果。:(

我哪里错了?

4

1 回答 1

2

md5 输出 128 位(16 字节)散列,而 3DES 采用 168 位(21 字节)密钥。我怀疑将 md5 哈希传递到您的加密和/或解密算法会导致沿途发生一些填充。

最好使用 SHA256(输出 256 位散列)并将输出截断为 168 位,或者使用 AES-256 而不是 3DES,并将完整的 256 位散列作为密钥。比这更好的是使用适当的密钥派生函数(如PBKDF2)从字符串密码创建密钥。

于 2013-01-30T15:42:13.577 回答