javascript - cryptoJS 解密/解密消息 AES CFB 模式

标签 javascript encryption cryptojs

我正在 Ruby 中加密一些字符串,将其发送到客户端并尝试在那里解密该字符串。我没有使用 aes rollup(尽管我尝试过得到相同的结果)。我已将 aes.js、core.js 和 cipher-core.js 包作为 Assets 包含在内。我检查了 cipher-core.js 中是否存在报告为未找到的函数。我收到错误:

Uncaught TypeError: Cannot read property 'createDecryptor' of undefined
at Object.reset (aes.self-9251f7d….js?body=1:28)
at Object.init (aes.self-9251f7d….js?body=1:25)
at Object.c.hasOwnProperty.c.init (aes.self-9251f7d….js?body=1:8)
at Object.c.hasOwnProperty.c.init (aes.self-9251f7d….js?body=1:8)
at Object.c.hasOwnProperty.c.init (aes.self-9251f7d….js?body=1:8)
at Object.create (aes.self-9251f7d….js?body=1:8)
at Object.createDecryptor (aes.self-9251f7d….js?body=1:25)
at Object.decrypt (aes.self-9251f7d….js?body=1:31)
at Object.decrypt (aes.self-9251f7d….js?body=1:32)
at Object.decrypt (aes.self-9251f7d….js?body=1:26)

这是代码:

function decipher(encipheredMessage, password, iv) {
  var parts = encipheredMessage.split('--', 2),
      enciphered = replaceHex(parts[0])

  deciphered = CryptoJS.AES.decrypt(
    enciphered,
    password,
    { iv: iv,
      mode: CryptoJS.mode.CFB,
      padding: CryptoJS.pad.NoPadding }
    ).toString(CryptoJS.enc.Utf8)

  return deciphered
}

当我将代码加载到节点并为其提供 Ruby 用于加密字符串的 key/iv 时,解密就起作用了。有谁知道发生了什么事吗?

编辑

我一直在尝试通过多种方式使其发挥作用。我尝试将 key 设置为十六进制编码的字符串和十六进制编码的字符数组,但都没有进行任何更改。我真的很挣扎,因为我不是 JS 程序员,对于 cryptoJS 的其他问题的堆栈交换答案似乎都不适用。

最佳答案

阅读 cryptoJS 源代码后,我发现我需要在 application.js 中包含另外两个模块,完整的必需 js 文件集是:

cryptoJS/components/aes
cryptoJS/components/core
cryptoJS/components/cipher-core
cryptoJS/components/mode-cfb
cryptoJS/components/pad-(whichever padding used)

aes 汇总无法工作,因为它缺少其中一些组件,因此我认为最好单独包含这些组件。

关于javascript - cryptoJS 解密/解密消息 AES CFB 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46077614/

相关文章:

javascript - 如何正确使用多个初始化函数?

javascript - div 在 jquery 动画期间闪烁

security - OpenSSL ECDSA : private key passphrase

Java 等效于 C# AES 加密

java - 如何防止密码重新生成?

javascript - sleep 功能没有解决传递给它的 promise

javascript - 为什么 JavaScript 返回节点名称数组而不是节点 HTML 元素?

javascript - 如何在 JS 中获取 CryptoJS.HmacSHA256 的摘要表示

javascript - 如何从 JMeter 调用外部 JavaScript 文件方法

javascript - 使用 PHP 产生与 CryptoJS.enc.Base64 相同的结果