我正在尝试为 Android、iOS 和 Web 实现 aes256 安全性。在 iOS 部分我使用 this library .但是当我尝试在 this website 上使用相同的密码解密文本时或任何其他网站或 html 项目中的 googles 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!)
最佳答案
您使用的 AES256CBC.encryptString(..)
方法生成一个 IV 并在加密数据前加上它。 AES256CBC.decryptString(..)
方法
在解密消息之前从加密数据中获取 IV。
查看您正在使用的 encryptString
方法。看到它正在创建的 IV 了吗? IV 是在 CBC 模式下运行时作为 AES 加密/解密输入的随机数据位。 IV 通常预先添加到加密数据中(正如该库在此处所做的那样),但这在不同的库中并未标准化。
如果您不想将此库与其他实现一起使用,您需要自己处理这部分。
此外,您链接的在线网页似乎不支持 CBC 模式,因此请尝试使用另一个,如 this .
关于ios - 使用 AES256CBC 库解密不会返回相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43570031/