使用MD5哈希作为数据库的主键?

时间:2012-06-17 19:17:00

标签: md5

首先,请保持温和,我对数据库设计知之甚少。我正在与Splunk合作,根据客户呼叫信息(呼叫详细记录)生成记录。由于音量,我不能真正使用splunk来处理某些数据,因为它是非关系的。所以我将获取数据,使用splunk做一些简单的警报,监视奇怪的模式,并做一些其他更高级的事情。我最容易获得的数据源已经在系统上实时可用。我想做的是接收传入的SIP呼叫ID(通过RFC定义必须是全局唯一的),传出的SIP呼叫ID(再次,按定义必须是全局唯一的),当前的unix纪元时间,然后随机生成数字从1-2 ^ 31,将它们连接在一起,然后获取结果的md5哈希并将其用作主键。我们遇到碰撞的可能性有多大?对其他方法的任何建议都将非常感激。

1 个答案:

答案 0 :(得分:2)

碰撞的可能性大概是1 ^ 2 ^ 128但是由于md5有些破碎,如果对手知道RNG的某些内容,对手理论上可能会通过某种方式制作合适的呼叫ID来更频繁地创建碰撞。我认为您可以在没有散列的情况下使用该创建的值,或以其他方式考虑碰撞可能导致的风险并为此做出计划。