powershell filehash 与自定义 filehash 不同,只是有时

问题描述

我认为制作我自己的(可怕的)sha256 函数会是一个有趣的项目。我以最糟糕的方式做到了这一点 - 通过专门使用包含 '1's 和 '0's 作为字符的字符串进行操作。

无论如何,我让它工作了,它可以将“hello,world”散列到 9ca7e4eaa6e8ae9c7d261167129184883644d07dfba7cbfbc4c8a2e08360d5b9ca7e4eaa6e8ae9c7d261167129184883644d07dfba7cbfbc4c8a2e08360d5b 的预期值

所以接下来我尝试对文件进行哈希处理。 testing.txt 包含单词“testing”,也与 testing.txt 的 windows powershell Get-filehash 匹配。

然后我用 audacity 录制了一个 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 可以散列文件的所有位。如果是这种情况,我将如何读取文件的完整二进制数据?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)