C# 不考虑顺序的散列数据

C# 不考虑顺序的散列数据,c#,hash,C#,Hash,这是一个非常基本的问题,但是是否有任何类型的散列功能,其输出在数据位置方面是相同的 例如,abc的MD5哈希为900150983cd24fb0d6963f7d28e17f72,但cba的MD5哈希为3944B025C9CA7EEC3154B4466AE04A0 是否有任何实现可以使这些结果相同 也许散列是实现这一点的正确方法,如果是这样,有人能推荐一个不同的解决方案吗 感谢加密散列,不。像MD5这样的加密散列的真正目的是,即使非常相似的输入也会产生完全不同的输出。这是为了防止向试图破解散列的人提

这是一个非常基本的问题,但是是否有任何类型的散列功能,其输出在数据位置方面是相同的

例如,abc的MD5哈希为900150983cd24fb0d6963f7d28e17f72,但cba的MD5哈希为3944B025C9CA7EEC3154B4466AE04A0

是否有任何实现可以使这些结果相同

也许散列是实现这一点的正确方法,如果是这样,有人能推荐一个不同的解决方案吗


感谢加密散列,不。像MD5这样的加密散列的真正目的是,即使非常相似的输入也会产生完全不同的输出。这是为了防止向试图破解散列的人提供提示


正如注释中所建议的,您必须对字符串内容进行排序,使其完全相同。这增加了碰撞的风险;如果安全是你的目的,那么就不要这样做。

对于加密散列,不。像MD5这样的加密散列的真正目的是,即使非常相似的输入也会产生完全不同的输出。这是为了防止向试图破解散列的人提供提示


正如注释中所建议的,您必须对字符串内容进行排序,使其完全相同。这增加了碰撞的风险;如果您的目的是为了安全,那么就不要这样做。

这很快会因为太宽而关闭,但同时:对字符串中的字符进行排序,然后散列。现在你总是把“abc”散列,不管它们第一次出现的顺序是什么。当然。例如,确保字符串的顺序一致(例如,
abc->abc,cba->abc
)。或者使用不依赖于顺序的散列(例如CRC、XOR)。当然,性能可能会受到影响:)这将很快因为太宽而关闭,但同时:对字符串中的字符进行排序,然后散列。现在你总是把“abc”散列,不管它们第一次出现的顺序是什么。当然。例如,确保字符串的顺序一致(例如,
abc->abc,cba->abc
)。或者使用不依赖于顺序的散列(例如CRC、XOR)。当然,性能可能会受到影响:)