我正在做一个md5哈希,只是想确定结果:
md5.ComputeHash(bytePassword);
无论服务器是否一致?
e.g。 Windows 2003/2008和32/64位等。
答案 0 :(得分:18)
是的,它是一致的,md5 algorithm specification无论平台如何都定义它。
答案 1 :(得分:6)
MD5独立于操作系统和体系结构。所以它是“一致的”。
然而,MD5将任意比特序列作为输入,并输出128比特的序列。在许多情况下,您需要字符串。例如,您希望哈希密码,密码最初是一个字符串。将该字符串转换为位序列不是MD5本身的一部分,并且存在若干约定。我不确切知道C#,但Java等效String.getBytes()
方法将使用“平台默认字符集”,它可能随操作系统安装而变化。类似地,MD5的输出通常转换为带有十六进制表示法的字符串,它可以是大写或小写或其他。
因此,虽然MD5本身是一致的,但是在为MD5准备数据并对其输出进行后处理的部分中经常会出现错误。当心。
答案 2 :(得分:3)
md5哈希的结果是一个数字。无论您使用何种服务器甚至平台,给定输入返回的数字始终相同。
但是,数字的表达式可能会有所不同。例如,1
和1.0
是相同的数字,但表达方式不同。类似地,某些平台将返回与其他平台略有不同的哈希格式。在这种情况下,你有一个字节数组,这应该是相当安全的传递。将它转换为字符串后,请小心操作。
答案 3 :(得分:1)
MD5 Hashing是[系统/时间/除输入之外的任何东西]独立