2

我想要一个包含哈希或校验和的列作为单个值来比较记录。是否有可能在纯 SQL 中做这样的事情?您认为这与 PHP 中的编程解决方案相比更实用吗?

4

1 回答 1

1

是的,这是可能的。 MD5(), SHA1(), 和SHA2()都是可行的散列函数。

您必须逐行计算这些函数的值,逐个查询。例如,每次插入一行时,都必须插入哈希值,执行如下操作:

INSERT INTO x
       name=?name,
       address=?address,
       hash=MD5(CONCAT(?name,?address))

您需要在每次更新时执行类似的操作。如果你弄错了,这非常容易,尤其是当你的表结构发生变化时,你的哈希变得比无用更糟糕。

顺便说一句,MD5 对身份验证不再具有加密安全性。但是,对于封闭系统中的这种散列,它仍然是一个可以接受的选择。

于 2012-09-15T13:07:07.420 回答