为记录的字段值生成校验和或散列

时间:2012-09-15 12:47:21

标签: php mysql hash checksum

我希望将包含散列或校验和的列作为单个值来比较记录。是否可以在纯SQL中执行类似的操作?您是否认为这与PHP中的程序化解决方案相比是实用的?

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。 MD5()SHA1()SHA2()都是可行的哈希函数。

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

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

您需要在每次更新时执行类似的操作。如果你弄错了,这非常容易,特别是如果你的桌子结构改变了,你的哈希变得比无用的更糟糕。

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