我读了一些关于md5的文档,它说它有128个位,但是为什么是32个字符呢?我不能计算字符。
编辑:
沙-1产生160位,那么有多少个字符?
发布于 2011-06-11 17:03:23
32个字符作为六进制表示形式,即每字节2个字符。
发布于 2013-04-16 16:19:23
我想把一些答案总结成一个帖子。
首先,不要把MD5哈希看作是字符串,而是十六进制数字。因此,每个数字是一个十六进制数字(0-15或0-F),代表四位,而不是八位。
此外,一个字节或八个位由两个十六进制数字表示,例如b'1111 1111‘= 0xFF = 255。
MD5散列长度为128位,通常由32位十六进制数字表示。
沙-1散列长度为160位,通常由40位十六进制数字表示.
对于SHA-2家族,我认为哈希长度可以是一个预先确定的集合之一。所以SHA-512可以用128位十六进制数字来表示.
同样,这篇文章只是基于先前的答案。
发布于 2017-01-12 16:17:38
十六进制“字符”(nibble)不同于“字符”。
要清楚比特与字节、字符之间的关系。
2**8可能的组合:256个组合当您查看十六进制字符时,
[0-9] + [a-f]的16种组合:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f的全貌2**4:这意味着一个十六进制字符可以在一个字节中存储4位(半字节)。2**8组合。[0-9a-f][0-9a-f],它表示一个字节的两个半字节(我们称半字节为咬人)。当您查看一个常规单字节字符, (我们将跳过多字节和宽字符)
2**8的范围。md5()中的十六进制字符可以存储所有这些,那么您将看到所有小写字母、所有大写字母、所有标点符号和诸如¡°ÀÐàð之类的东西、空格(换行符和制表符)和控制字符(您甚至看不到这些字符,其中许多字符没有使用)。因此,它们显然是不同的,我希望这能提供最好的解决方案。
https://stackoverflow.com/questions/6317276
复制相似问题