我需要在字典上生成校验和。键和值。
是否有任何简单的方法可以迭代的方式完成此任务。
foreach(dic.Keys中的var项) checksum + = checksum(dic [item])+ checksum(item);
在这种情况下,键和值可以转换为字符串,连接,然后应用单个校验和,但有更好的方法吗?
理想情况下MD5但其他选项可行。使用它来验证通过几种存储方法传递的数据。然后将校验和与其他一些信息一起加密(使用AES),因此我并不担心理想的,牢不可破的校验和。
答案 0 :(得分:4)
生成签名几乎完全相同:创建MD5哈希对象,然后消化所有感兴趣的字节,然后提取哈希值。重要的是你和验证者就要散列的字节以及它们被散列的顺序达成一致。
在C#中,您可以通过反复调用HashAlgorithm.TransformBlock,然后最终调用HashAlgorithm.TransformFinalBlock来实现此目的。通过使用带有HashTransform的CryptoStream(MD5实现ICryptoTransform)然后简单地将字典写入加密流来自动执行此操作。
除此之外,无数的协议和加密方案消化哈希并加密它在野外受到羞辱。我建议走人迹罕至的道路并使用完善的行业标准::
答案 1 :(得分:0)
回答我自己的问题,我想......
每个项目的GetHashCode()。在未经检查的{}环境中添加它们。太简单了。
答案 2 :(得分:0)
您不应该依赖MD5编写任何新代码。它已被弃用,并且出于一些非常可靠的原因。你应该看看SHA-256,或者至少是SHA-1,而不是
你应该接受Remus的建议。密码学+哈希=数字签名。从架子上拉下来的东西(请不要使用XML-Security!),学习它,使用它,然后继续学习项目中其他有趣的部分。