我读了一些有关md5的文档,它说它是128位,但是为什么是32个字符?我无法计算字符。
- 1个字节为8位
- 如果1个字符是1个字节
- 那么128位是128/8 = 16字节对吗?
编辑:
SHA-1产生160位,那么那里有多少个字符?
我读了一些有关md5的文档,它说它是128位,但是为什么是32个字符?我无法计算字符。
编辑:
SHA-1产生160位,那么那里有多少个字符?
((1 << (n*4))-1).bit_length()
Answers:
以十六进制表示的32个字符,即每个字节2个字符。
要明确位与字节,字符。
2**8
可能的组合:256种组合当您查看一个十六进制字符时,
[0-9] + [a-f]
:全系列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()
可以存储所有内容,那么您会看到所有小写字母,所有大写字母,所有标点符号以及诸如¡°ÀÐàð
,空格(如换行符和制表符)之类的内容以及控制字符(可以甚至看不到,其中许多都没有使用)。因此它们显然是不同的,我希望能最好地打破这些差异。
MD5产生十六进制数字(0-15 / 0-F),因此它们每个都是4位。128/4 = 32个字符。
SHA-1也会产生十六进制数字(0-15 / 0-F),因此160/4 = 40个字符。
(由于它们是数学运算,因此大多数散列函数的输出通常表示为十六进制数字。)
您可能会想到8位的ASCII文本字符。
那是32个十六进制字符-1个十六进制字符是4位。