Те же результаты для кодирования, но разные результаты для хеширования - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь сравнить результаты хеширования в Java и Python. У меня есть фрагмент кода для Java и Python, которые дают одинаковые выходные данные для кодирования с UTF-8, но дают разные (своего рода) результаты для хэша с sha256.

Код JAVA:

String hash = "hello" 
byte[] test = hash.getBytes();
MessageDigest sha = MessageDigest.getInstance("SHA-256");
byte[] key = sha.digest(hash.getBytes());

выход: тест ==> клавиша [104, 101, 108, 108, 111] ==> [44, -14, 77, -70, 95, -80,-93, 14, 38, -24, 59, 42, -59, -71, -30, -98, 27, 22, 30, 92, 31, -89, 66, 94, 115, 4, 51, 98, -109, -117, -104, 36]

Код Python:

hash = "hello"
test = list(bytearray(text.encode()))
m = hashlib.sha256()
m.update(hash.encode("UTF-8"))
data = m.digest()
key = list(data)

вывод: тест ==> такой же, какКлюч вывода Java ==> [44, 242, 77, 186, 95, 176, 163, 14, 38, 232, 59, 42, 197, 185, 226, 158, 27, 22, 30, 92, 31, 167, 66, 94, 115, 4, 51, 98, 147, 139, 152, 36]

1 Ответ

2 голосов
/ 17 октября 2019

Это те же результаты. Вы просто печатаете их по-другому, так что для Java используются подписанные байты вместо неподписанных байтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...