我为数据库中的每个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)); --我想这是更好的方法?
发布于 2014-12-15 11:50:05
你真正想要达到的问题仍然是我的一般答案,那就是不要提交你自己的散列/认证/.方案,但要使用经过验证的机制(即,已对其进行了分析,记录了其界限/限制,并提供了最佳做法指南)。
在这种情况下,最有可能的是基于哈希的消息认证代码(HMAC),它可以通过php的散列扩展获得。
https://stackoverflow.com/questions/27482886
复制相似问题