我为数据库中的每个MD5 Hash
生成一个IP
。 Hash
将在网站上显示,而IP
则不会显示。
我现在生成这样的Hash
:
$ip = '1.2.3.4';
$salt = '1024 random characters';
$hash = md5(sha1($salt).md5($ip).sha1($salt));
如果您没有盐,我认为以这种方式将Hash
解码回IP
可能更难或不可能。我做得对,我是部分还是完全错了?
Hash
用于获取文件名中包含Hash
的图像。由于此图像在网站上可见,我不希望其他人知道图像(哈希)属于哪个IP 。我不需要将其反转为原始IP。我最终需要一个MD5哈希,因为我正在谈论的API需要MD5。
更新: VolkerK提到了php的hash_hmac
功能。我阅读了手册,现在我在md5()
内使用了这个:$hash = md5(hash_hmac('sha1', $ip, $salt));
我想这是更好的方法吗?
答案 0 :(得分:1)
你实际上想要实现的问题仍然是我的通用答案,不是要推出自己的哈希/身份验证/ ...方案,而是使用经过验证的机制(即已经分析过,它的界限/限制是提供文件和最佳实践指南。) 在这种情况下,最可能的候选人是Hash-based message authentication code (HMAC),例如可以获得。通过php的hash extension 。