Hash MD5算法是否总是为相同的字符串生成相同的输出?

Hash MD5算法是否总是为相同的字符串生成相同的输出?,hash,md5,Hash,Md5,MD5算法是否总是为相同的字符串生成相同的输出 使用salt是否只是产生不同的输出?是的,哈希算法总是产生相同的输出。如果您使用相同的salt,那么对于给定的输入,这也将始终产生相同的输出。是的,否则MD5对于文件验证之类的事情将毫无用处。非确定性输出的原因是什么?是的,对于相同的输入,MD5总是输出相同的输出。密码就是这样用的。将散列存储在数据库中,然后当用户输入密码时,再次对其进行散列,并比较两个散列 注意:MD5不建议用于散列密码,因为它在加密方面很弱。有更多合适的加密哈希可用,例如。然而

MD5算法是否总是为相同的字符串生成相同的输出


使用salt是否只是产生不同的输出?

是的,哈希算法总是产生相同的输出。如果您使用相同的salt,那么对于给定的输入,这也将始终产生相同的输出。

是的,否则MD5对于文件验证之类的事情将毫无用处。非确定性输出的原因是什么?

是的,对于相同的输入,MD5总是输出相同的输出。密码就是这样用的。将散列存储在数据库中,然后当用户输入密码时,再次对其进行散列,并比较两个散列


注意:MD5不建议用于散列密码,因为它在加密方面很弱。有更多合适的加密哈希可用,例如。然而,从历史上看,它一直用于此目的。

是的。MD5是一个哈希函数


这并不意味着MD5是唯一的。多个输入可以映射到同一个散列,但任何给定的输入只有一个散列。

是的,MD5是确定性的,这被认为是许多消息摘要函数应用程序的理想特性


至于使用salt,您的意思是“以某种微妙的方式更改输入字符串”,不是吗?当然,这也是消息摘要的一个可取特征,即它们(很有可能)为不同的消息生成不同的摘要。

是的。尽管在某些情况下,它会为不同的字符串创建相同的哈希。

您能解释一下为什么这样问吗?似乎出于某种原因,您需要另一种行为。这是一种确定性算法。否则怎么可能呢?我不熟悉密码学和哈希之间的区别。我认为它也被混淆了,RC5MD5不应该被用作密码,永远不要。@mavnaranjo:我认为它不应该被否决。我没有错,那是5年前的事了。它过去和现在都被用于密码,尽管这可能是不安全的,但它仍然是一个有效的说明点,说明您如何知道它具有不变的输出。我会在这一点上加上一个编辑,我笑着说“你有什么理由不确定输出”,因为这正是我的想法。然而,显然.NET的GetHashCode()是不确定的,至少在应用程序运行之间是如此。在C#中,MD5是一个接口,而MD5CryptoServiceProvider和MD5Cng是两个独立的实现。如果两者都是确定性的,那就很奇怪了。恐怕前面也出现了相同的答案。9年前。