我正在开发一个项目,它将信息从外部API保存到数据库中。此API仅显示最新的可用信息,因此我需要检查此API并将其与我自己的数据库信息进行比较,以查看是否有新的更改。
以前,我通过手动比较每个值来做到这一点:
if($externalapi['item'] !== $mydatabase['item']) {
// changes detected!
}
既然我正在制作这个项目的V2,我觉得这不是正确的方法,我应该采取不同的方式。
我已经考虑过MD5的外部API输出和我自己的数据库输出,并比较这两个。
if(md5($externalapi) !== md5($mydatabase)) {
// changes detected!
}
但我不确定那是多么可靠。
最好的办法是什么?
在确定此类用途的哈希函数的可靠性时,您会对加密哈希的“生日问题”名称冲突概率感兴趣。例如,如果您在100年的时间内每秒散布数十亿个不同的列表,我相信典型的MD5哈希将有50%的机会产生名称冲突。
搜索加密哈希的“生日问题”或“名称冲突”概率将为您提供理解可靠性所需的所有数学计算。