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

7
SHA-1哈希值是否可以是纯数字,还是算法确保必须至少有一个字母字符?编辑:我将其表示为16进制,作为PHP sha1()函数返回的字符串。
3个回答

19

从技术上讲,SHA1哈希是一个数字,通常以十六进制编码(这就是PHP的sha1()函数所做的),以便它几乎总是包含字母,但这并不保证。

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


谢谢!这正是我想知道的。 :) - Ryan McCue
2
更易懂的说法是:在十六进制表示中,大约每146,000,000个SHA1中有一个没有高于9的数字。 - Nick Johnson
9
例如,hashlib.sha1('169977707').hexdigest() == '5938266572196464632409940308852871296620'。 - Nick Johnson
@NickJohnson 你是用蛮力找到的吗? - Ciro Santilli OurBigBook.com
@NickJohnson 哦天啊...好吧,只有十六分之一亿。肯定不用几分钟就搞定了吧? - v.oddou

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位(十进制)随机数,而且没有出现任何7、8或9一样。

1

你可以用任何进制来表示SHA1的输出(就像任何二进制数据一样)。具体来说,你可以将结果编码为8/10进制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接