gpt4 book ai didi

email - 电子邮件的唯一标识符

转载 作者:行者123 更新时间:2023-12-01 13:06:35 26 4
gpt4 key购买 nike

我正在编写一个 C# 应用程序,允许用户将电子邮件存储在 MS SQL Server 数据库中。很多时候,多个用户将被复制到来自客户的电子邮件中。如果他们都尝试将相同的电子邮件添加到数据库,我想确保电子邮件只添加一次。

MD5 作为执行此操作的一种方式浮现在脑海中。我不需要担心恶意篡改,只需确保同一封电子邮件将映射到相同的哈希值,并且不会有两封内容不同的电子邮件映射到相同的哈希值。

我的问题实际上归结为如何将多个字段组合成一个 MD5(或其他)哈希值。其中一些字段在每封电子邮件中只有一个值(例如主题、正文、发件人电子邮件地址),而其他字段将有多个值(不同数量的附件、收件人)。我想开发一种唯一标识与平台和语言无关(不基于序列化)的电子邮件的方法。有什么建议吗?

最佳答案

您计划归档多少电子邮件?如果您不希望存档需要很多 TB,我认为这是一个过早的优化。

由于每个字段都可以表示为字符串或字节数组,因此无论它包含多少个值,对于哈希函数来说它们看起来都是一样的。只需将它们全部散列在一起,您将获得一个唯一标识符。

编辑伪代码示例

# intialized the hash object
hash = md5()

# compute the hashes for each field
hash.update(from_str)
hash.update(to_str)
hash.update(cc_str)
hash.update(body_str)
hash.update(...) # the rest of the email fields

# compute the identifier string
id = hash.hexdigest()

如果将所有更新调用替换为

,您将获得相同的输出
# concatenate all fields and hash
hash.update(from_str + to_str + cc_str + body_str + ...)

提取字符串的方式和接口(interface)会因您的应用程序、语言和 API 而异。

当给定相同的输入时,不同的电子邮件客户端可能会为某些字段生成不同的格式并不重要,这将为您提供原始电子邮件的唯一哈希值。

关于email - 电子邮件的唯一标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2684160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com