首页 > 解决方案 > 需要有关检查数组更改的建议

问题描述

我正在开发一个项目,该项目将信息从外部 API 保存到数据库中。这个 API 只显示最新的可用信息,所以我需要检查这个 API 并与我自己的数据库信息进行比较,看看是否有新的变化。

之前,我通过手动比较每个值来做到这一点:

if($externalapi['item'] !== $mydatabase['item']) {
    // changes detected!
}

现在我正在制作这个项目的 V2,我觉得这不是正确的方法,我应该以不同的方式来做。

我考虑过 MD5'ing 外部 API 输出和我自己的数据库输出,并比较这两者。

if(md5($externalapi) !== md5($mydatabase)) {
    // changes detected!
}

但我不确定这有多可靠。

最好的方法是什么?

标签: phpcomparemd5

解决方案


在确定此类用途的散列函数的可靠性时,您会对密码散列的“生日问题”名称冲突概率感兴趣。例如,如果您在 100 年的过程中每秒散列数十亿个不同的列表,我相信一个典型的 MD5 散列将有 50% 的机会产生名称冲突。

搜索加密哈希的“生日问题”或“名称冲突”概率将为您提供理解可靠性所需的所有数学。


推荐阅读