我正在Ruby中加密一些字符串,将其发送给客户端,并试图在那里解密该字符串。我没有使用aes汇总(虽然我尝试了相同的结果)。我已经将aes.js、core.js和密码-core.js包作为资产。我已经检查了密码-core.js中是否存在报告为not的函数。我发现了一个错误:
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时,破译工作。有人知道这是怎么回事吗?
编辑
我一直在努力让这件事在很多方面起作用。我试着把键变成十六进制编码的字符串和十六进制编码的char数组,但都没有做任何改变。由于我不是JS程序员,所以我真的在努力解决这个问题,与cryptoJS的其他问题的堆栈交换答案似乎都不适用。
发布于 2017-09-07 14:14:36
在阅读了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汇总没有工作,因为它缺少一些这些组件,所以我觉得最好单独包含这些组件。
https://stackoverflow.com/questions/46077614
复制相似问题