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

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

md5.ComputeHash(bytePassword); 

无论服务器是否一致?

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

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

MD5独立于操作系统和体系结构。 所以它是“一致的”。

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

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

md5哈希的结果是一个数字。 无论您使用何种服务器甚至平台,给定输入返回的数字始终相同。

但是,数字的表达可能会有所不同。 例如, 11.0是相同的数字,但表达方式不同。 类似地,某些平台将返回与其他平台略有不同的哈希格式。 在这种情况下,你有一个字节数组,这应该是相当安全的传递。 将它转换为字符串后要小心。

MD5 Hashing是[系统/时间/除输入之外的任何东西]独立