加密JavaScript JSON数组中的ROR字节数据

时间:2017-07-27 11:53:50

标签: javascript ruby-on-rails node.js encryption utf-8

我在服务器端使用RoR并向JS客户端发送一些加密数据。对于ROR,我使用的是OpenSSl加密技术。

`c= OpenSSL::Cipher::Cipher.new('aes-256-cbc')
 c = cipher.encrypt
 c.key = Digest::SHA256.digest(key)
 Base64.strict_encode64(c.update(value.to_s) + c.final)
`

这是我在ROR中加密的代码

`var cipherParams:any = CryptoJS.lib.CipherParams.create({
    ciphertext: CryptoJS.enc.Base64.parse(encrypted_data)
 });
var digest = CryptoJS.SHA256(key.toString(CryptoJS.enc.Utf8));
let bytes = CryptoJS.AES.decrypt(cipherParams, digest, {iv: iv});
bytes.toString(CryptoJS.enc.Utf8);
`

这是我的JS解密逻辑

当我从服务器加密某些键值对数据时,我无法解密它。我收到此错误

  

MalFormed Utf8

但当我尝试解密单个值时,如:“5678”我得到了正确的价值。如果我将 CryptoJS.enc.Utf8 更改为 CryptoJS .enc.Latin1 我收到了一些不可读的值,但没有显示错误。

我认为将其转换为UTF8会产生问题。但为什么?

我尝试了很多解决方案。我正在使用正确的密钥和摘要和IV,我已多次检查它,我也发送正确的字符串键和值。

0 个答案:

没有答案