#python #python-3.x #sha512 #hashlib #filehash
Вопрос:
Я использую этот код для хэширования файлов, однако хэши меняются каждый раз, когда я запускаю скрипт… Как получить фиксированный хэш, пожалуйста ? Может быть, есть случайное семя, мне оно для этого не нужно.
У меня просто есть список файлов в папке, и мне нужен их уникальный и фиксированный хэш для каждого из них :
import sys import os import hashlib # BUF_SIZE is totally arbitrary, change for your app! BUF_SIZE = 65536 # lets read stuff in 64kb chunks! files = [f for f in os.listdir('.') if os.path.isfile(f)] sha512 = hashlib.sha512() hashes = [] for file in files: with open(file, 'rb') as f: while True: data = f.read(BUF_SIZE) if not data: break sha512.update(data) hashes.append(file "|" sha512.hexdigest()) with open("hash.txt", 'w ') as f: for h in hashes: f.write(h 'n') print(h)
Вывод представляет собой файл с каждым именем файла и хэшем файла. Весь хэш файла должен быть одинаковым каждый раз, когда я запускаю скрипт (не в случае rn)
Комментарии:
1. Ваш хэш включает текущий файл и все предыдущие файлы. Это то, чего ты хочешь? Это будет означать, что хэши будут другими, если файлы будут прочитаны в другом порядке, или если файл будет добавлен или изменен.
2. Спасибо за ваш ответ. Я не понимаю. У меня просто есть список файлов в папке, и мне нужен их уникальный и фиксированный хэш для каждого из них
3. Попробуйте переместить линию, которая начинается
sha512 =
сразу после линии, начинающейсяwith
4. Спасибо тебе !! невероятно !