我的问题:
我正在寻找一种将人的姓名和地址表示为编码 id 的方法。id 应仅包含字母数字字符,防冲突,并以尽可能少的字符数表示。我的第一个想法是简单地使用像 MD5 或 SHA1 这样的加密哈希函数,但这似乎有点矫枉过正(安全性并不重要 - 不需要是单向的),我更愿意找到能产生较短的身份证。有谁知道适合这个问题的现有算法?
换句话说,实现以下函数的最佳方法是什么,以使相同输入的返回值始终相同,不太可能发生冲突,并且 id 小于 20 个字符?
>>> make_fake_id(fname = 'Oscar', lname = 'Grouch', stnum = '1', stname = 'Sesame', zip = '12345')
N1743123734
应用程序上下文(对于那些感兴趣的人):
这将用于记录链接应用程序。给定一个输入名称和地址,我们在一个非常大的数据库中搜索最佳匹配并返回数据库 id 和其他数据(我们如何做到这一点在这里并不重要)。如果没有匹配项,我需要从搜索输入(实体的名称和地址数据)生成这个伪/生成/派生的 id。每条搜索记录都应该产生一个输出记录,其中要么是真实的(匹配/链接产生的实际数据库 id),要么是这个生成的伪/生成/派生 id。伪 id 将以一个字符(例如 N)作为前缀,以将其与真实 id 区分开来。