Crypto JS SHA3 с разным выходом на одном входе

Мы используем Crypto JS SHA3 для хэширования нашего имени пользователя и пароля.

Функция берет входные данные из двух полей ввода html для имени пользователя и пароля, объединяет их с солью и хэширует их. Первый хэш работает успешно, однако хэширование того же вывода снова дает другой результат.

Это соответствующий код:

$prehash = $salt + $user + $pass;

$prehash = CryptoJS.enc.Utf8.parse($prehash);
var sha3 = CryptoJS.algo.SHA3.create();
sha3.update($prehash);
var password  = sha3.finalize().toString(CryptoJS.enc.Hex);
sha3.reset();

var sha3 = CryptoJS.algo.SHA3.create();
sha3.update($prehash);
var password2  = sha3.finalize().toString(CryptoJS.enc.Hex);
sha3.reset();

console.log('PREHASH: ' + $prehash);

console.log('HASHWORD: ' + password);

console.log('HASHWORD2: ' + password2);

Журналы консоли выводят следующее:

PREHASH:  4d616e636865737465722c20436f6e6e65637469637574204d6f62696c65205573657273546f776e20436c65726b68617665206272616e6368657320616476616e63652042656c6769756d

HASHWORD: db90cbb6766f3ca0dc8af39455cd6e224263db31caed3f73f9ad923a02c34211c85cc17a8e3d0166cd82c10d12a137332891c0c201174e16d19a93b6b4d430cf

HASHWORD2:
9ed635963fa0079a0520d8afa59d1e19be601d7bf77f623702304240993ce9bdd2f3023ca6bbd44f2ab30ceb2de1c8f0d3fe3d63292c5a23c44ddd1d485baa71

РЕДАКТИРОВАТЬ: Мы проверили на двух других устройствах, и обнаружили, что мы получаем правильный вывод на двух других устройствах. Такое поведение наблюдается только на моем коллеге по телефону. Теперь мы более запутались. Кто-нибудь видит, почему другое устройство будет выдавать другой вывод?

РЕДАКТИРОВАТЬ: Вот jsfiddle, который демонстрирует проблему. Это должно читаться как правда и правда. На нашем устройстве Android 4.2.2 он читает ложь и ложь http://jsfiddle.net/odL57wfo/2/

1 ответ

Нам не удалось найти решение этой проблемы, поэтому мы открыли ошибку в проекте crypto-js и тем временем используем другой алгоритм хэширования

Другие вопросы по тегам