как зашифровать / расшифровать с помощью crypto-js

Я использую библиотеку 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

person S.M_Emamian    schedule 01.04.2018    source источник
comment
Я получил это сообщение об ошибке: cannot read property 'Utf8' of undefined   -  person S.M_Emamian    schedule 01.04.2018


Ответы (4)


Я никогда не использовал эту библиотеку, но небольшая проверка показывает, что ваш результат - это введенный вами код 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.

person Afshin    schedule 01.04.2018

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));

введите здесь описание изображения

person Santosh Singh    schedule 23.09.2019

В настоящее время вы получаете шестнадцатеричную строку 6d79206d657373616765, поскольку вы можете проверить этот преобразователь, когда вы введете my message it верну тебя 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));
}
person Aaqib    schedule 01.04.2018

Вы можете использовать это. cippertext использовать алгоритмы вывода.

ciphertext.toString("base64")

or

ciphertext.toString("hex")
person Tolga AYKURT    schedule 28.07.2019