我在写一个C#API,它存储了SWIFT
消息类型。我需要编写一个类,它接收整个字符串消息并创建它的散列值,将此散列值存储在数据库中,以便在处理新消息时创建另一个散列值,并根据数据库中的散列值检查该散列值。散列字符串进行重复检测
我有以下
public static byte[] GetHash(string inputString)
{
HashAlgorithm algorithm = MD5.Create(); // SHA1.Create()
return algorithm.ComputeHash(Encoding.UTF8.GetBytes(inputString));
}
,我需要知道,这是否会做什么?
全球评论 *
所以,我收到的文件在一个安全的网络,所以我们对其有效性完全控制 - 我需要什么来控制正在取得重复支付。我可以将记录分解为各自的标签要素(SWFIT术语),然后单独检查它们,但这需要与数据库中的记录进行比较,并且成本不会发生。
我需要检查整个消息是否是已处理消息的副本,这就是为什么我使用这种方法。
你必须记住,给定足够的数据样本,你将碰到md5。可能会更好的是在数据库中创建一个UNIQUE列。 –
@Puciek我不认为数据库中的身份列会解决他的问题,因为他希望每个唯一邮件内容具有唯一的哈希,而不仅仅是每个邮件唯一的哈希。 –
取决于您希望存储多少个字符串。查看[这个问题](http://stackoverflow.com/questions/201705/how-many-random-elements-before-md5-produces-collisions)讨论碰撞概率。 –