Проблема в строке:
this.email = crypto.AES.decrypt(email,this.pass).toString();
Без параметра в toString()
вы получите строку шестнадцатеричных кодов ASCII. Например, когда обычный текст имеет вид «test@email.com», вы получите:
7465737440656d61696c2e636f6d
в шестнадцатеричном представлении (74 = "t", 65 = "e", ...).
Чтобы получить нормальное строковое представление, т.е.
test@email.com
, вам необходимо передать параметр как это:
toString(CryptoJS.enc.Utf8);
toString
ведет себя так, потому что функция дешифрования crypto.AES.decrypt()
возвращает байтовый массив, так как содержимое также может быть двоичными данными (например, изображения или другие данные). toString()
просто конвертирует каждый байт в шестнадцатеричное представление строки.
Передав параметр CryptoJS.enc.Utf8
, вы прямо указываете методу toString()
обрабатывать байты как символы в кодировке UTF-8.