在我的用户数据库表中,我将用户的电子邮件地址的MD5散列作为id。将MD5散列表示为整数
实施例:email([email protected]) = id(d41d8cd98f00b204e9800998ecf8427e)
不幸的是,我要表示的ID作为整数值现在 - 为了能够使用的API,其中ID只能是整数。
现在我正在寻找一种方法来将id编码为整数,以便在接收时再次发送解码。我怎么能这样做?
我的想法而已:
- 的MD5哈希
- 替换MD5哈希值的每一个字符
convert_uuencode()
和convert_uudecode()
其ord()
值
哪种方法更好?你知道更好的方法来做到这一点吗?
我希望你能帮助我。非常感谢您提前!
你有没有其他的,可能是实习生,值识别您的用户?那么,你的用户表至少应该有一个PK。 – Malax 2009-09-14 17:10:57
@Malax:是的,主键是包含MD5哈希的id字段。这是一个不好的解决方案? – caw 2009-09-14 17:24:16
使用MD5散列作为用户表的主键通常不是一个好主意。自动递增/串行整数ID是4-8字节。一个md5散列是32个字节。整数值比较(例如每次加入该表或从中选择一行)将比比较32字节字符串快许多倍,并且整数值将需要较少的存储空间。真的...如果你想使用字符串值,为什么不使用电子邮件地址本身?在大多数情况下,这将是32个字节或更少。 – 2009-09-14 17:50:16