【问题标题】:Decrypting with AES256CBC Library doesn't return same value?使用 AES256CBC 库解密不会返回相同的值?
【发布时间】:2017-04-23 10:36:09
【问题描述】:

我正在尝试对 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!)

【问题讨论】:

    标签: ios swift encryption aes


    【解决方案1】:

    您使用的AES256CBC.encryptString(..) 方法会生成一个IV 并在加密数据前面加上它。然后AES256CBC.decryptString(..) 方法 在解密消息之前从加密数据中获取IV

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

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

    还有,你链接的在线网页,好像不支持CBC模式,换一个试试,比如this

    【讨论】:

    • 对不起,我不明白我需要为 web 端做什么?
    • ı 看过那个页面,但我找不到输出字符串。它也赋予了不同的价值。我了解这种情况,所以我认为我需要将我的图书馆从 CBS 更改为另一个常用的图书馆?
    猜你喜欢
    • 2021-07-08
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多