6

SHA-1 哈希是否有可能是纯数字的,或者算法是否确保必须至少有一个字母字符?

编辑:我用 16 进制表示它,作为 PHP 的 sha1() 函数返回的字符串。

4

3 回答 3

18

从技术上讲,SHA1 哈希是一个数字,它通常以基数 16 编码(这是 PHP 的 sha1() 所做的),因此它几乎总是包含一个字母。但不能保证这一点。

没有数字 AF 的十六进制编码的 160 位数字的几率是 (10/16) 40或大约 6.84227766 × 10 -9

于 2009-06-27T09:19:13.757 回答
3

SHA-1 哈希是一个 160 位的数字。为方便书写,一般以十六进制书写。十六进制(以 16 为基数)数字为 0、1、2、3、4、5、6、7、8、9、a、b、c、d、e 和 f。字母没有什么特别之处。每个十六进制字符相当于 4 位,这意味着哈希可以写成 40 个字符。

我不相信 SHA-1 哈希不能有任何字母的任何原因,但这是不可能的。这就像生成一个 40 位(以 10 为基数)的随机数,却没有得到任何 7、8 或 9。

于 2009-06-27T09:21:46.187 回答
1

您可以在任何您想要的基础上表示 SHA1 的输出(就像任何二进制数据一样)。具体来说,您可以将结果编码为 base-8/10。

于 2009-06-27T09:20:42.787 回答