Результаты шифрования sha1 различны для Python и Java - PullRequest
1 голос
/ 26 октября 2011

Приложение, мне нужно sha1 шифрование, но результаты различаются для Python и Java, Java является правильным. Потому что в Python нет байтового объекта, а Java-байт используется для вычисления хеша. Как получить правильные результаты с питоном?

1 Ответ

3 голосов
/ 26 октября 2011

Как обычно, разница составляет , а не в реализации дайджеста (они хорошо документированы и правильно реализованы во всех основных библиотеках). Разница в том, как вы представляете результирующие данные.

md.digest() возвращает byte[] с двоичными данными, созданными дайджестом.

new String(md.digest()) пытается интерпретировать эти байты как текст в кодировке платформы по умолчанию, которая почти наверняка не та, которую вы хотите.

Вы , вероятно, хотите, чтобы дайджест был представлен в кодировке hex или Base64.

Попробуйте это (обязательно импортируйте javax.xml.bind.DatatypeConverter):

String result = DatatypeConverter.printHexBinary(md.digest());

В качестве альтернативы, если вам нужна Base64, используйте printBase65Binary().

...