ios - 使用 AES256CBC 库解密不会返回相同的值?

标签 ios swift encryption aes

我正在尝试为 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/

相关文章:

ios - 尝试用 ViewController 做一个简单的分数虽然难倒

iOS - 自己的 VoIP Asterisk 客户端应用程序

ios - AVPlayerLayer 中显示的 AVAssetTrack 显示不正确

javascript - 如何知道 WebRTC 连接使用什么加密?

Python 凯撒密码脚本

ios - 使用 UIPanGestureRecognizer 旋转 ImageView,错误——Swift

ios - 将上下文传递给多个 InterfaceControllers?

ios - RxTest:体系结构 x86_64 和 arm64 的 undefined symbol

ios - 如何让 iOS VoiceOver 在更改时读取文本元素(不是当前焦点)?

c# - 保护共享主机上的连接字符串