我使用的是crypto-js库:
https://github.com/brix/crypto-js
我想加密一些值并解密它们。
但它返回错误的输出。
我的代码:
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));
}
但我的控制台没有返回my message
。它会像这样返回:
6d79206d657373616765
答案 0 :(得分:2)
我从未使用过这个库,但是一个小的检查显示你的结果是输入的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
。
答案 1 :(得分:0)
目前您正在获取六角形字符串6d79206d657373616765
,因为当您输入my message
时,您可以查看this convertor它会返回6d79206d657373616765
您需要在.toString()
方法中使用decrypt
,因为目前您正在为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));
}
答案 2 :(得分:0)
您可以使用它。 cippertext使用输出算法。
ciphertext.toString("base64")
或
ciphertext.toString("hex")
答案 3 :(得分:0)