如何使用 crypto-js encrypt/decrypt
how to encrypt/decrypt with crypto-js
我正在使用 crypto-js 库:
https://github.com/brix/crypto-js
我想加密一些值并解密它们。
但它 return 输出错误。
我的代码:
import CryptoAES from 'crypto-js/aes'
componentDidMount(){
var ciphertext = CryptoAES.encrypt('my message', 'secret key 123');
var _ciphertext = CryptoAES.decrypt(ciphertext, 'secret key 123');
console.log(_ciphertext.toString(CryptoAES.Utf8));
}
但我的控制台没有 return my message
。它 return 是这样的:
6d79206d657373616765
我从未使用过这个库,但一个小的检查显示你的结果是你输入的 ASCII 代码作为十六进制字符串。
0x6d=m
...
0x65=e
6d|79|20|6d|65|73|73|61|67|65
m |y | |m |e |s |s |a |g |e
所以这段代码工作正常。可能 _ciphertext.toString()
把一切都搞砸了。您需要检查如何正确使用 _ciphertext
。
目前您得到的是六进制字符串 6d79206d657373616765
,因为您可以在输入 my message
时检查 this convertor,它将 return 您 6d79206d657373616765
您需要在 decrypt
方法中使用 .toString()
,因为目前您正在为 my message
获取十六进制,您需要将其转换回 string
,所以你需要改变这个:
var _ciphertext = CryptoAES.decrypt(ciphertext, 'secret key 123');
至
var _ciphertext = CryptoAES.decrypt(ciphertext.toString(), 'secret key 123');
它将像:
import CryptoAES from 'crypto-js/aes'
componentDidMount(){
var ciphertext = CryptoAES.encrypt('my message', 'secret key 123');
var _ciphertext = CryptoAES.decrypt(ciphertext.toString(), 'secret key 123');
console.log(_ciphertext.toString(CryptoAES.Utf8));
}
你可以用这个。 cippertext 使用输出算法。
ciphertext.toString("base64")
或
ciphertext.toString("hex")
import CryptoAES from 'crypto-js/aes';
import CryptoENC from 'crypto-js/enc-utf8';
var ciphertext = CryptoAES.encrypt('my message', 'secret key 123');
var _ciphertext = CryptoAES.decrypt(ciphertext.toString(), 'secret key 123');
console.log(_ciphertext.toString(CryptoENC));
我正在使用 crypto-js 库:
https://github.com/brix/crypto-js
我想加密一些值并解密它们。
但它 return 输出错误。
我的代码:
import CryptoAES from 'crypto-js/aes'
componentDidMount(){
var ciphertext = CryptoAES.encrypt('my message', 'secret key 123');
var _ciphertext = CryptoAES.decrypt(ciphertext, 'secret key 123');
console.log(_ciphertext.toString(CryptoAES.Utf8));
}
但我的控制台没有 return my message
。它 return 是这样的:
6d79206d657373616765
我从未使用过这个库,但一个小的检查显示你的结果是你输入的 ASCII 代码作为十六进制字符串。
0x6d=m
...
0x65=e
6d|79|20|6d|65|73|73|61|67|65
m |y | |m |e |s |s |a |g |e
所以这段代码工作正常。可能 _ciphertext.toString()
把一切都搞砸了。您需要检查如何正确使用 _ciphertext
。
目前您得到的是六进制字符串 6d79206d657373616765
,因为您可以在输入 my message
时检查 this convertor,它将 return 您 6d79206d657373616765
您需要在 decrypt
方法中使用 .toString()
,因为目前您正在为 my message
获取十六进制,您需要将其转换回 string
,所以你需要改变这个:
var _ciphertext = CryptoAES.decrypt(ciphertext, 'secret key 123');
至
var _ciphertext = CryptoAES.decrypt(ciphertext.toString(), 'secret key 123');
它将像:
import CryptoAES from 'crypto-js/aes'
componentDidMount(){
var ciphertext = CryptoAES.encrypt('my message', 'secret key 123');
var _ciphertext = CryptoAES.decrypt(ciphertext.toString(), 'secret key 123');
console.log(_ciphertext.toString(CryptoAES.Utf8));
}
你可以用这个。 cippertext 使用输出算法。
ciphertext.toString("base64")
或
ciphertext.toString("hex")
import CryptoAES from 'crypto-js/aes';
import CryptoENC from 'crypto-js/enc-utf8';
var ciphertext = CryptoAES.encrypt('my message', 'secret key 123');
var _ciphertext = CryptoAES.decrypt(ciphertext.toString(), 'secret key 123');
console.log(_ciphertext.toString(CryptoENC));