python 3.9 - не удалось получить правильный хэш sha1 для нескольких файлов в цикле

Ссылаясь на код, указанный в решении по ссылке ниже, вы не получаете правильный хэш SHA1 для 2-го и далее файлов в цикле . Почему неправильно говорить, потому что

Используя приведенный ниже код: -

  • ПРАВИЛЬНО -> При попытке сгенерировать хэш SHA1 для одного и того же файла отдельно (путем выполнения кода дважды), затем получить другой хэш SHA1 (правильно) и

  • НЕПРАВИЛЬНО -> При генерации хэша для нескольких файлов в одном выполнении, включая этот файл, также получается другой хэш (неверный) для этого файла ->

Пожалуйста, посоветуйте, если что-то изменить в этом коде или нужно выбрать какой-либо другой подход?

Код, написанный по ссылке, указанной внизу ->

      import glob
import hashlib
import os

path = input("Please provide path to search for file pattern (search will be in this path sub-directories also: ")
filepattern = input("Please provide the file pattern to search in given path. Example *.jar, *abc*.jar.: ")
assert os.path.exists(path), "I did not find the path " + str(path)
path = path.rstrip("/")
tocheck = (f'{path}/**/{filepattern}')
hash_obj = hashlib.sha1()

searched_file_list = glob.iglob(tocheck, recursive=True)
for file in searched_file_list:
    print(f'{file}')
    try:
        checksum = ""
        file_for_sha1 = ""
        file_for_sha1 = open(file, 'rb')
        hash_obj.update(file_for_sha1.read())
        checksum = hash_obj.hexdigest()
        print(f'sha1 for file ({file})= {checksum}')
    finally:
        file_for_sha1.close()

Пример файла -> abc.txt с приведенным ниже текстом, созданным в /home/test/git/reader/cabin/: — Привет, это для проверки кода SHA1.

а затем этот файл скопирован еще в одно место, т.е. /home/test/git/reader/check/cabin/

Вывод консоли Linux, показывающий один и тот же SHA1 для обоих файлов: -

      :~/git/reader/check/cabin$ sha1sum abc.txt
fc4db67f46711b2c18bd133abd67965649edfffc  abc.txt
:~/git/reader/check/cabin$ cd ../..
:~/git/reader$ cd cabin/
:~/git/reader/cabin$ sha1sum abc.txt
fc4db67f46711b2c18bd133abd67965649edfffc  abc.txt

Код в цикле в одном выполнении — создание двух разных SHA1 для этого файла abc.txt из обоих мест: —

  • sha1 для файла (/home/test/git/reader/cabin/abc.txt)= fc4db67f46711b2c18bd133abd67965649edfffc
  • sha1 для файла (/home/test/git/reader/check/cabin/abc.txt)= a4691598ea25ea4c7404369a685725115c7f305b

Код выполняется дважды для одного и того же файла, указывая соответствующее местоположение (означает один файл за раз), а затем генерируя одинаковый и правильный хэш SHA1:

  • sha1 для файла (/home/test/git/reader/check/cabin/abc.txt)= fc4db67f46711b2c18bd133abd67965649edfffc

  • sha1 для файла (/home/test/git/reader/cabin/abc.txt)= fc4db67f46711b2c18bd133abd67965649edfffc

Ссылка на исходный код ->Генерация одной контрольной суммы MD5/SHA1 для нескольких файлов в Python

0 ответов

Другие вопросы по тегам