在CryptoJS中加密并在NodeJS加密模块中解密

问题描述 投票:1回答:1

我已经在这里搜索并用Google搜索,但找不到真正想要的东西。看起来这应该很容易,但是很少有类似的线程无法解决。我希望能得到答案。因此,我有这个小提琴JS Fiddle,它可以在CryptoJS中进行加密和解密,到目前为止没有问题。代码在这里:

var options = { mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7, keySize: 256 };  

var encrypted = CryptoJS.AES.encrypt('encrypt me', 'A37u172sSFS9O9JNHs82u38djdncnvyz', options);


var decrypted = CryptoJS.AES.decrypt(encrypted, "A37u172sSFS9O9JNHs82u38djdncnvyz", options);  
var plaintext = decrypted.toString(CryptoJS.enc.Utf8);

但是当我使用加密的字符串并尝试解密时,我无法。参见此节点的提琴:Node Fiddle,代码为:

const crypto = require('crypto');

const mykey = crypto.createDecipher('aes-256-cbc', 'A37u172sSFS9O9JNHs82u38djdncnvyz');

//A37u172sSFS9O9JNHs82u38djdncnvyz9
const mystr = mykey.update('U2FsdGVkX18mFQOkolgDJ0cjOfYqiqKCUGdNoA2nESI=', 'base64', 'utf8');

理想情况下,mystr字符串应该向我返回文本“ encrypt me”,但它显示了一些乱码。我知道应该很容易找到它,但是我无法理解我做错了什么。关于加密,我完全是菜鸟。这里有帮助吗?

node.js encryption cryptojs node-crypto
1个回答
0
投票

[旧文章,但我只是做了相反的事情,这应该是相关的,因为我在这里没有找到任何其他类似的文章,所以将其发布。

加密节点JS加密。

const key = crypto.createHash('sha256').update(String(random)).digest();
const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
return cipher.update(JSON.stringify(data || {}), 'utf8', 'base64') + cipher.final('base64');

在CryptoJS中解密

const key = CryptoJS.SHA256(randomString) // same string as encrypt
const plaintextArray = CryptoJS.AES.decrypt(
    {
      ciphertext: CryptoJS.enc.Base64.parse(data),
      salt: ''
    },
    key,
    { iv: CryptoJS.enc.Utf8.parse(iv), mode: CryptoJS.mode.CBC }
  )
  return CryptoJS.enc.Utf8.stringify(plaintextArray)
© www.soinside.com 2019 - 2024. All rights reserved.