使用MD5 Hash比较数据库记录

时间:2014-06-08 10:25:09

标签: java sql md5

健康相关记录中的一个常见问题(我确信其他类型的数据库记录)是单个患者可能出现在多个单独记录下的主索引中。这可能导致患者具有多个ID。在我看来,管理这个的一种方法是构建固定信息的MD5哈希,然后比较哈希。例如,我们可以假设名字,姓氏,出生日期和地址是一致的。它们可以在一个字符串中连接在一起,删除空格并将所有内容都设置为小写。然后可以通过MD5算法解析字符串。虽然这不是故障安全的(地址可能会改变),但它可能有所帮助。我真的想对此提出一些反馈,或者建议采用其他方法吗?

2 个答案:

答案 0 :(得分:0)

如果您从输入字符串中删除地址,我会建议使用此方法。地址可能会发生变化,有时人们会在懒惰中错误拼写地址。我建议添加除地址之外的其他元素,不要只保留名字,姓氏和DOB,因为虽然概率不高但可能会发生冲突。一个简单的实现:

   String first_name = "Abdul";
   String last_name = "Ansari";
   String DOB = "29/09/1994";
   String fourth_element = ""; //Add something
   String data = first_name + last_name + DOB + fourth_element;
   data = data.replaceAll(" ","");
   data = data.toLowerCase();
   MessageDigest md = MessageDigest.getInstance("MD5");
   md.update(data.getBytes());
   byte[] digest = md.digest();
   // Then convert the bytes to hex and add them in database

答案 1 :(得分:0)

我认为使用MD5没有意义。您创建的字符串可用于比较相等。

或者,您可以有多个级别的匹配。例如,如果匹配的是姓氏,姓氏,生日和地址,则完美匹配然后被转换为同一个人。另一方面,名字,姓氏,生日,但不是地址,然后将由人审查,以确定它是否匹配...