【发布时间】:2009-07-06 19:56:04
【问题描述】:
我一直在寻找一种在 C# 中使用预定键对给定字符串进行散列的方法。
在我通过互联网尝试寻找示例的冒险过程中,我看到了许多 MD5CryptoServiceProvider 示例,这些示例似乎使用机器的默认密钥,但没有一个应用特定密钥。我需要一个特定的密钥来编码数据,以便将其同步到其他人的服务器。我递给他们一个散列字符串和一个 ID 号,他们使用它分析数据并返回一个类似的集合给我。那么有没有办法让 md5 通过一个对两者都一致的特定键来散列。
我更希望在 C# 中完成此操作,但如果使用库无法实现,您可以使用 php 或 asp 等网络语言来完成吗?
编辑:误解了我陷入的场景,坐了一会儿,思考了为什么他们会让我使用密钥,看来他们希望将密钥附加到字符串的末尾并进行散列处理。这样,服务器可以将其拥有的密钥与传递的数据一起附加,以确保其有效的访问计算机。无论如何...谢谢大家^_^
Edit2:正如我在下面的评论中所说,我没有注意到“加盐”这个词。哦,被扔进没有方向的新事物的乐趣。
【问题讨论】:
-
MD5 没有密钥...正如 Tom Ritter 指出的那样,它不是加密算法
-
正如每个人都指出的那样,MD5 是散列,而不是加密,但是从您的帖子中不清楚您是否真的确实想要散列和错误或真的想要加密。请澄清。
-
您的编辑并没有真正澄清您的问题。 MD5 不使用您所询问的“预定密钥”。但是,如果您需要做的只是比较哈希值,那么只需获取两个输入的哈希值并逐位比较结果。请注意,MD5 通常(除了极不可能的哈希冲突情况)会给出完全不同的结果,即使输入变化最小。
-
我认为他的意思是他想将字符串加盐以进行哈希处理。这样服务器就可以使用相同的盐来验证输入。
-
是的,我查了盐腌,这就是我需要的。愚蠢的工作让我陷入了我完全忘记的事情。至少我学到了一些新东西吧。