在 CryptoJS 中加密并在 NodeJS Crypto 模块中解密
Encrypt in CryptoJS and decrypt in NodeJS Crypto module
我在这里搜索并用谷歌搜索,但无法真正找到我要找的东西。看起来这应该很容易,但很少有类似的线程像 SO 一样没有得到解答。我希望能得到答案。所以我有这个 fiddle 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);
但是当我获取加密的字符串并尝试解密时,我无法解密。看到这个节点fiddle:Node Fiddle,代码是:
const crypto = require('crypto');
const mykey = crypto.createDecipher('aes-256-cbc', 'A37u172sSFS9O9JNHs82u38djdncnvyz');
//A37u172sSFS9O9JNHs82u38djdncnvyz9
const mystr = mykey.update('U2FsdGVkX18mFQOkolgDJ0cjOfYqiqKCUGdNoA2nESI=', 'base64', 'utf8');
理想情况下,mystr 字符串应该 return 对我来说是文本 'encrypt me',但它显示了一些乱码。我知道应该很容易找到,但我无法理解我做错了什么。在加密方面,我完全是菜鸟。有什么帮助吗?
旧 post 但我只是做了相反的事情它应该是相关的,post因为我在这里没有找到任何其他类似的文章。
加密节点 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)
我在这里搜索并用谷歌搜索,但无法真正找到我要找的东西。看起来这应该很容易,但很少有类似的线程像 SO 一样没有得到解答。我希望能得到答案。所以我有这个 fiddle 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);
但是当我获取加密的字符串并尝试解密时,我无法解密。看到这个节点fiddle:Node Fiddle,代码是:
const crypto = require('crypto');
const mykey = crypto.createDecipher('aes-256-cbc', 'A37u172sSFS9O9JNHs82u38djdncnvyz');
//A37u172sSFS9O9JNHs82u38djdncnvyz9
const mystr = mykey.update('U2FsdGVkX18mFQOkolgDJ0cjOfYqiqKCUGdNoA2nESI=', 'base64', 'utf8');
理想情况下,mystr 字符串应该 return 对我来说是文本 'encrypt me',但它显示了一些乱码。我知道应该很容易找到,但我无法理解我做错了什么。在加密方面,我完全是菜鸟。有什么帮助吗?
旧 post 但我只是做了相反的事情它应该是相关的,post因为我在这里没有找到任何其他类似的文章。
加密节点 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)