所有的MD5十六进制哈希表示都以数字开头吗?

3

每当我使用MD5对文件名进行哈希处理(上传的文件已经被赋予了MD5哈希名称),哈希的十六进制表示总是以数字开头。

这是我服务器上少量文件的巧合,还是一种正常情况?


你能给一个具体的例子吗? - Greg Hewgill
2
不要混淆加密和哈希。MD5是一种哈希函数。你看到的是一个十六进制数,唯一的问题是我们用字母数字0-9和字母A-F来表示十六进制数,所以看起来MD5哈希是一个字母和数字序列,但实际上并不是。 - Furicane
1
是的,举个例子会更好。你是在问实际的"#"(八角形符号)是否显示在开头,还是一个数字(0-9)? - Bryan
哈希(md5)不等于加密,哈希是单向的,加密是可逆的。(如果我每次读到这个都有一分钱...) - Stephen
4个回答

11
chris@siri ~ (3.6M) $ echo 'yoyo' | md5sum 
e0ea852f2f2d9564429842f7863af499  -

这只是巧合。


1

# 不是 md5 的一部分。整个 md5 由32个字符组成,每个字符代表4位二进制,使用16进制表示。因此,整个 md5 只包含16进制数字,你可以说它总是以一个数字开头。

你可能是想问,它们是否总是以十六进制数字 0-9 而不是 a-f 开始,答案是否定的。它们可以从 0-f 中任何位置开始。

总之:十六进制数


1
这个句子。#字符必须来自其他地方。 - Pekka
困惑了,OP在哪里说有一个#号? - Bryan
@Bryan,有人恶意破坏了这个问题。我会回滚。 - Esailija
1
@FelixLoether,也许这并不是正确的术语,但“#”已更改为“number”...也许OP的哈希前缀带有“#”,如果编辑“澄清”了它,谁会知道呢? - Esailija
@FelixLoether,你说得对,但对于我们这些不使用像“#”这样的俚语词汇表示数字的非母语人士来说,最初可能会感到困惑:P 看起来问题的意思是问哈希值是否总是以0-9开头,而不是更高的十六进制数字(a-f)。 - Esailija
显示剩余2条评论

1

md5 是一个32位十六进制数字,因此它可以以数字或字母 af 中的任意一个开头。


0

MD5 只能是十六进制(32 位数字 0-9 A-F),哈希不是其中的一部分。


我认为意图是使用 '#' 作为“数字”,而不是字面上的井号字符。 - tadman
这可能有点学究,但md5是一种哈希算法,它返回一个128位的数字。是的,这个数字通常是十六进制的,但我可以用十进制、二进制或任何我想要的方式来写它。 - NullUserException
没错,虽然不是很常规,但我认为十六进制这个东西有点像标准,就像靠右行驶一样。这是太过武断的事情,无法争论,但显然需要达成共识... - corintiumrope

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