English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Полное руководство по примерам Python
В этой статье вы узнаете, как найти хеш-значение файла Python и показать его.
Чтобы понять этот пример, вы должны знать следующееPython программированиеТема:
Хеш-функция получает любое количество данных и возвращает битовую строку фиксированной длины. Выход функции называется резюме сообщения.
Они широко используются в криптографии для аутентификации. Есть много функций хеширования, таких как MD5, SHA-1 и т.д. См. эту страницу, чтобы узнать больше.Хеширование функций в криптографииБолее подробная информация.
В этом примере мы покажем, как хешировать файл. Мы будем использовать алгоритм хеширования SHA-1. Длина резюме SHA-1 составляет 160 бит.
Мы не предоставляем все данные из файла за один раз, потому что некоторые файлы очень велики и не могут быть помещены в память за один раз. Разделение файла на блоки повысит эффективность использования памяти процессом.
# Python-программа для поиска SHA1-сообщения摘要 файла # Импортировать модуль hashlib import hashlib def hash_file(filename): """Эта функция возвращает хеш SHA-1 Передать файлу """ # Создать объект хеша h = hashlib.sha1() # Открываем файл для чтения в двоичном режиме with open(filename, 'rb') as file: # Цикл до конца файла chunk = 0 while chunk != b'' # Чтение только 1024 байт за один раз chunk = file.read(1024) h.update(chunk) # Возвратить шестнадцатеричное представление резюме return h.hexdigest() message = hash_file("track1.mp3") print(message)
Результат вывода
633d7356947eec543c50b76a1852f92427f4dca9
В этом программном обеспечении мы открываем файл в двоичном режиме. Функции хеширования доступны в модуле hashlib. Мы используем цикл while до конца файла. При достижении конца файла мы получаем объект пустых байт.
В каждом итерации мы читаем из файла только 1024 байта (эта величина может быть изменена по необходимости) и обновляем хеш-функцию.
В конце концов, мы используем метод hexdigest() для возвращения сообщения摘要 в виде шестнадцатеричной записи.