md5哈希是否一致或服务器依赖的结果?

Bla*_*man 11 c# asp.net hash md5

我正在做一个md5哈希,只是想确保结果:

md5.ComputeHash(bytePassword);
Run Code Online (Sandbox Code Playgroud)

无论服务器是否一致?

例如Windows 2003/2008和32/64位等.

Jam*_*mes 18

是的,它是一致的,md5算法规范定义它,无论平台如何.

  • 除了我已经看到一些系统用大写字母表示输出而一些用小写字母表示.如果您要比较输出的字符串表示,请确保并进行不区分大小写的比较. (4认同)
  • 您是否将十六进制表示( - > String)与MD5值( - > Numerical)混合并进行字符串比较?在这种情况下,有效的十六进制字符可能是小写或大写 - 但值是相同的.换句话说:如果你将0xAa与0xaA进行比较并考虑相关的情况,那么你没有正确比较,我认为这是一个错误. (2认同)

Tho*_*nin 6

MD5独立于操作系统和体系结构.所以它是"一致的".

但是,MD5将任意比特序列作为输入,并输出128比特的序列.在许多情况下,您需要字符串.例如,您希望哈希密码,密码最初是一个字符串.将该字符串转换为位序列不是MD5本身的一部分,并且存在若干约定.我不完全了解C#,但Java等效String.getBytes()方法将使用"平台默认字符集",它可能随操作系统安装而变化.类似地,MD5的输出通常转换为具有十六进制表示法的字符串,并且可以是大写或小写或其他.

因此,虽然MD5本身是一致的,但是在为MD5准备数据并对其输出进行后处理的部分中经常会出现错误.谨防.