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 выполняет хэширование всех битов файла. Если это так, как мне прочитать полные двоичные данные файла?