邮件重复数据删除

时间:2014-04-03 15:06:24

标签: email hash bigdata sha deduplication

是否可以通过使用一些标题来对电子邮件进行重复数据删除,因为根据RFC,它们的message-id应该是唯一的?

有没有办法计算下面这个重复数据删除方法中丢失1个单个电子邮件的机会(这3个标题的sha512哈希)?

// $email is a parsed array containing 3 keys (mime headers) -> message_id, subject and date. $hashStr = $email['message_id']; $hashStr .= $email['subject']; $hashStr .= $email['date']; $uniqueEmailId = hash('sha512', $hashStr);

关键任务是不会遗漏任何单个电子邮件,我们可能需要对几个(> 2亿)mime文件进行重复数据删除。

2 个答案:

答案 0 :(得分:4)

SHA512哈希产生具有512位数据的哈希值。假设比特的随机分布,这可能超过1.34e + 154个可能的值。即使有超过2e + 9个样本,意外碰撞的可能性也几乎为零。

但是,您对哈希的输入并不是那么随机。 message_idglobally unique identifier,只有""具有5.3e + 36个可能值,随机性取决于实现。根据维基链接,碰撞的几率在4.2e + 18个样本时约为50%。电子邮件地址和日期可能会明显高于此。

那就是说,如果没有实际进行概率数学计算,我会说赔率几乎可以忽略不计。

答案 1 :(得分:2)

如果message-id已经是唯一的,那么哈希就没有什么意义了(因此引入了可忽略不计的碰撞机会)。
似乎更强大的方法是使用message-id本身作为比较的基础。