Реализация SHA1 отличается от встроенного SHA1Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Реализация SHA1 отличается от встроенного SHA1

Сообщение Anonymous »


Я пытаюсь переопределить алгоритм SHA1 в Python, но результат моей функции отличается от результата во встроенной хеш-библиотеке, сначала я думал, что проблема в моей функции поворота, но после ее исправления все равно остается ошибка. разница в выводах, вот мой код:

из hashlib импортировать sha1 как встроенный_sha1 def rotl32(значение: int, count: int) -> int: return ((значение > (32 - счетчик))) & 0xffffffff def default_sha1 (данные: байты) -> байты: вернуть встроенный_sha1(данные).дайджест() def sha1(данные: байты) -> байты: # инициализируем переменные ч0 = 0x67452301 h1 = 0xefcdab89 h2 = 0x98badcfe h3 = 0x10325476 h4 = 0xc3d2e1f0 msg_len = len(данные) # добавляем 0x80 данные += б"\x80" # добавляем 0x00 до тех пор, пока msg_len % 64 == 56 данные += b"\x00" * ((56 - msg_len % 64) % 64) # добавляем длину в битах как 64-битное целое число с прямым порядком байтов данные += (msg_len * 8).to_bytes(8, «большой») # получаем новую длину (теперь кратную 64) msg_len = len(данные) для меня в диапазоне (0, msg_len, 64): # для каждого фрагмента размером 64 байта # разбить фрагмент на шестнадцать 32-битных слов с прямым порядком байтов слова = [int.from_bytes(данные[i + j:i + j + 4], «большой») для j в диапазоне (0, 64, 4)] # расширить шестнадцать 32-битных слов до восьмидесяти 32-битных слов для j в диапазоне (16, 80): слова.добавить( rotl32((слова[j - 3] ^ слова[j - 8] ^ слова[j - 14] ^ слова[j - 16]), 1) ) # инициализируем хеш-значение для этого фрагмента а = h0 б = h1 с = h2 d = h3 е = h4 для j в диапазоне (80): если 0
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»