SHA-1哈希可以纯粹是数字吗?

时间:2009-06-27 09:13:49

标签: php algorithm theory sha1

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

编辑:我在16的基础上表示它,作为PHP的sha1()函数返回的字符串。

3 个答案:

答案 0 :(得分:17)

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

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

答案 1 :(得分: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)的随机数而没有得到任何7s,8s或9s。

答案 2 :(得分:1)

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