SQL Server提供了Checksum()、Binary_Checksum()和CHECKSUM_AVG()函数,用于基于表达式或列列表构建哈希索引。
这对于确定行是否已更改很有帮助。然后,可以使用该机制来识别记录是否已被更新。
我发现了许多冲突的例子,这些冲突是为不同的值生成相同的哈希值。我们如何识别这些函数的碰撞条件。
任何人都必须知道哪种算法或技术用于生成/计算无哈希冲突的哈希?
发布于 2020-06-05 19:49:44
BINARY_CHECKSUM的PHP实现:
$input = 'binary string';
$sum = 0;
for ($i = 0; $i < strlen($input); $i++) {
$sum = ($sum << 4) ^ ord($in[$i]);
$sum = ($sum & 0xffffffff) ^ ($sum >> 32);
}
return $sum > 0x7fffffff ? $sum - 0x100000000 : $sum;https://stackoverflow.com/questions/49345105
复制相似问题