Php CRC32是否适合此操作?

Php CRC32是否适合此操作?,php,crc32,Php,Crc32,如果我想为一些与自定义字符串相关的产品属性生成一个校验和,并在以后使用该校验和,以查看同一产品中的任何属性是否随时间而改变,php的crc32方法是否合适 例如,假设我有一个具有以下属性的产品: 颜色:红色 尺码:xl 我试图通过创建以下字符串来获取此产品的校验和:red | | xl,然后在此字符串上运行crc32函数。如果以后,大小的标识不同,或者产品获得了一个新属性,我想通过更改此产品上的校验和来标识此差异 基线是,我使用crc32方法是否安全,或者我应该选择更慢但更安全的哈希算法,冲突更

如果我想为一些与自定义字符串相关的产品属性生成一个校验和,并在以后使用该校验和,以查看同一产品中的任何属性是否随时间而改变,php的
crc32
方法是否合适

例如,假设我有一个具有以下属性的产品:

颜色:红色
尺码:xl

我试图通过创建以下字符串来获取此产品的校验和:
red | | xl
,然后在此字符串上运行
crc32
函数。如果以后,大小的标识不同,或者产品获得了一个新属性,我想通过更改此产品上的校验和来标识此差异

基线是,我使用
crc32
方法是否安全,或者我应该选择更慢但更安全的哈希算法,冲突更少?

定义“合适”

我认为没有什么理由不在这里使用加密哈希。如果您有a)数百万个字符串,或b)恶意用户想要欺骗您,使您认为属性是相同的,那么您应该使用加密哈希。SHA-256应随时可用。如果需要节省空间,请随意使用128位。碰撞的可能性仍然可以忽略不计

更新:


根据评论,加密散列将不会带来好处。我建议使用一种非常快速的散列,可以有效地消除碰撞的可能性。

这是否回答了您的问题?简短版本:这取决于你将有多少输入。但是,crc32和更复杂的散列函数(即使是md5,对于不安全的应用程序,也会带来巨大的好处)之间的计算工作量差异可能是可以忽略的。有128位输出的东西将会非常可靠。我不担心空间问题(但事实上,这也会导致问题),我正在努力节省时间。目前,我谈论的是可能对300万个产品进行哈希运算,每天12次,考虑到服务器上应该运行的所有其他内容,以及以后数据库中的项目数可能达到10或100倍,虽然这一时间还不算太长,但我试着选择最快的哈希算法,这仍然适合我的需要。用户不能在这里输入数据,只能在管理员处输入数据,因此在我看来,欺骗系统不是问题。