Хэш Whirlpool в Java и Python дает разные результаты

У меня есть два проекта. панагер и панагер-андроид. Я использую алгоритм хэширования вихревых операций и с одним и тем же данным panager дает результаты, отличные от panager-android. panager написан на python, а panager-android (думаю) на Java. Я ультра новичок в Java, так что успокойся:P

В Python я использую модуль, который я нашел в сети (whirlpool.py), а в Java я использую библиотеку jacksum.

1 ответ

Решение

Существуют разные версии спецификации Whirlpool, которые генерируют разные выходные данные для одного и того же входа. Это выглядит как whirlpool.py может реализовывать оригинальный Whirlpool (называемый "Whirlpool-0"), тогда как в panager-android вы используете Whirlpool-2:

AbstractChecksum encode = JacksumAPI.getChecksumInstance("whirlpool2");

Попробуйте изменить это на "whirlpool0" и посмотреть, соответствует ли оно вашей реализации Python сейчас. В противном случае попробуйте "whirlpool1".

Википедия знает хэши Whirlpool из каждой версии для данного тестового ввода, который вы можете использовать, чтобы идентифицировать версию сомнительной реализации Whirlpool или узнать, является ли она полностью неправильной и сломанной.

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