用AES256CBC库解密并没有返回相同的值?

时间:2017-04-23 10:36:10

标签: ios swift encryption aes

我试图在Android,iOS和Web上实施aes256安全性。在iOS部分我使用this library。但是当我尝试在this website或任何其他网站上使用相同密码解密文本或使用html项目中的google aes.js文件解密文本时。他们没有给出相同的结果。 我错过了什么?谢谢。

  let str = "emre"
    let password = "2ABdhQTy1GAWiwfvsKfJyeZVfrHeloQI"
    let encrypted = AES256CBC.encryptString(str, password: password)
    print(encrypted!)
    let decrypted = AES256CBC.decryptString(encrypted!, password: "2ABdhQTy1GAWiwfvsKfJyeZVfrHeloQI")
    print(decrypted!)

1 个答案:

答案 0 :(得分:1)

您使用的AES256CBC.encryptString(..)方法生成IV并使用它预先加密数据。那么AES256CBC.decryptString(..)方法 在解密消息之前从加密数据中获取 IV

查看您正在使用的encryptString方法。看到它创造的IV? IV是在CBC模式下运行时作为AES加密/解密输入的随机位数据。 IV通常预先加入到加密数据中(就像这个库在这里所做的那样),但这在不同的库中并不是标准化的。

如果您不想将此库与其他实现一起使用,则需要自己处理此部分。

此外,您链接的在线网页似乎不支持CBC模式,因此请尝试使用其他网页,例如this