$key = md5(json_encode($array));
但是,我想绝对确定密钥是唯一的,并且两个不同的数组可能产生相同的md5哈希.目前的想法是:
$key = base64_encode(json_encode($array));
这保证是独一无二的,但产生相当长的钥匙.我可以使用sha512或者这种类型的哈希与md5具有相同的密钥冲突潜力吗?有没有办法生成比base64方法更短的密钥,100%保证是唯一的?
为了100%明确,我的问题是:如何为一组数据生成最短的100%唯一标识符?
解决方法:
如果您希望100%保证唯一键与您的内容相匹配,那么唯一的方法是使用您的内容的全长.您可以按原样使用json_encoded字符串,或者如果您想要一个没有任何“特殊”字符的字符串,您可以通过base64_encode()或bin2hex()或类似字符串运行它.任何哈希函数如md5,sha1,sha256等显然不能100%唯一 – 因为它们具有固定长度,并且由于https://en.wikipedia.org/wiki/Pigeonhole_principle,对于大于哈希的输入内容必须存在非唯一结果.
在实践中,md5和sha1冲突现在已经发布,但是更长的哈希函数存在于长时间没有已知或预期的冲突,所以你也可以考虑使用现代哈希算法并且相当安全,你不会有任何冲突重复.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。