我在测试 SHA256 时遇到了一些问题

I've had some issue testing SHA256

当使用 SHA256 时,它总是返回标准英文字母(小写)和阿拉伯数字(0-9)中包含的字符。所以返回的字符集是 [a-z]U[0-9]

这让我感到困惑的原因是我听说 SHA256 应该有 2^256 个不同的结果,因为每一位都是“随机的”每个字节应该由一个完全随机的 ASCII 字符表示,而不是一个适合一组限制的 36 个字符(26 个字母和 10 个数字)

基本上,我想知道我的 SHA256 是否正常运行,如果正常,为什么会这样。我正在使用 linux.

附带的标准 sha256sum 函数

是的,你的假设是正确的。 SHA256 将生成总共 32 个字节(= 256 位),每个字节具有 0 到 255(含)之间的任意值。

但这就是问题所在,这些字节中的大部分不代表有效的 ASCII 字符(仅 0 - 127)并且其中一些是不可见的(space、制表符、换行符和几个控制字符)。

为了“呈现”SHA256,字节以十六进制格式编码。单个字节由 2 个字符表示。 00 = 0, 7f = 127, ff = 255.

空字符串的SHA256散列为e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,或者如果每个字节转换为十进制:

227 176 196 66 152 252 28 20 154 251 244 200 153 111 185 36 39 174 65 228 100 155 147 76 164 149 153 27 120 82 184 = 85[=10]