Powershell filehash отличается от пользовательского filehash только иногда

Я подумал, что будет забавным проектом создать свою (ужасную) функцию sha256. Я сделал это худшим из возможных способов - работая исключительно со строками, содержащими в качестве символов «1» и «0».

В любом случае, у меня он работает, и он может хэшировать 'hello, world' до ожидаемого значения 9ca7e4eaa6e8ae9c7d261167129184883644d07dfba7cbfbc4c8a2e08360d5b9ca7e4eaa6e8ae9c7d261167129184883644d07dfba7cbfbc4c8a2e08360d5b

так что затем я попробовал хешировать файл. , содержащий слово "тестирование", соответствует Get-FileHash Windows PowerShell из testing.txt также.

Затем я дерзко записал mp3 и попробовал его хэшировать, и все было по-другому!

что я пробовал:

  • изменение имени файла testing.txt на testing.mp3, что приводит к совпадению хэшей
  • хеширование различных файлов. кажется, что он не работает для всех нетекстовых файлов.

мой код для чтения файлов:

      def file_to_binstr(filename):
    with open(filename,'rb') as f:
        contents = f.read()
    
    binstr = ''
    for char in contents: # contents is bytestring
        char = bin(char)[2:] # string of binary representation of each byte
        char = zero_pad(char, 8) # makes sure byte is 8 characters long
        binstr += char

    return binstr

Я подозреваю, что open(filename, 'rb') не позволяет мне читать все байты файла, только байты, связанные с содержимым файла, тогда как Windows Get-FileHash выполняет хэширование всех битов файла. Если это так, как мне прочитать полные двоичные данные файла?

0 ответов

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