我在Ruby中加密一些字符串,将其发送到客户端并尝试在那里解密字符串。我没有使用aes汇总(虽然我尝试过相同的结果)。我已将aes.js,core.js和cipher-core.js包作为资产包含在内。我已经检查过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提供用于加密字符串的键/ iv时,解密工作。有谁知道发生了什么事?
修改
我一直试图通过多种方式实现这一目标。我已经尝试将密钥设为十六进制编码字符串和十六进制编码字符数组,但都没有做任何更改。我真的很挣扎,因为我不是JS程序员,没有任何堆栈交换解决其他问题与cryptoJS似乎适用。
答案 0 :(得分:1)
在阅读了cryptoJS源代码后,我发现我需要在我的应用程序中包含两个以上的模块.js是完整的必要js文件集:
cryptoJS/components/aes
cryptoJS/components/core
cryptoJS/components/cipher-core
cryptoJS/components/mode-cfb
cryptoJS/components/pad-(whichever padding used)
aes汇总不起作用,因为它缺少一些这些组件,所以我觉得最好单独包含这些组件。