Скармливаю ф-циям одинаковый текст (всё в utf-8 кодировке), но результат на JS отличается от PHP (или наоборот).
На клиенте использую CryptoJS, а на сервере: php-sha3.
Собственно, почему?
Atllantis: Первым делом разберитесь где корректная реализация. Потом придется допилить сторону, где она некорректна. Или придется допиливать данные, если обе реализации корректны.
Да же если с пустой строки сгенерить, итог разный:
CryptoJS: 0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e
PHP: a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26
Проблему решил!
Нашёл ещё одно решение: keccak-php
Оно работает нормально и результат такой, какой и должен быть.
Так что все, кому нужен SHA3, сразу ставьте keccak-php.