我正在使用密码-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发布于 2018-04-01 20:23:09
我从未使用过这个库,但是一个小的检查显示您的结果是输入的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。
发布于 2019-09-23 13:48:29
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));

发布于 2018-04-01 20:43:34
当前您正在获得一个十六进制字符串6d79206d657373616765,因为您可以在输入my message时检查这个转换器,它将返回6d79206d657373616765。
在密码js文档中使用的
您需要在您的.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));
}https://stackoverflow.com/questions/49602276
复制相似问题