我试图在php中创建一个管理页面,我希望管理员看不到真正的IP,只加密。我试图这样做是因为用户说如果管理员可以看到他们的真实IP不好并且可以用它做坏事。 我想只从ip加密一部分或两部分,例如127.0.x.1或127.x.1,并且x是加密的东西。这可能吗?
答案 0 :(得分:0)
我通过使用crc32和sha512哈希来解决。
我使用此功能向管理员显示IP:
public static function readable_encrypted_ip($ip)
{
$s = explode('.', $ip);
$encrypt = hash('crc32', $s[1] . $s[2]);
$result = $s[0] . "." . $encrypt . "." . $s[3];
return $result;
}
此功能可在链接中使用:
public static function encrypt_ip($ip)
{
return hash('sha512', $ip);
}
答案 1 :(得分:-1)
<?
$ip = "192.168.11.22";
$parts = explode(".", $ip);
$secret1 = 123;
$secret2 = 321;
$parts[2] = $parts[2] * $secret1;
$parts[3] = $parts[3] * $secret2;
$encrypted = implode(".", $parts);
?>
结果:192.168.1353.7062
在致电/profile/iplog/192.168.1353.2706
时,只需进行反向计算。
当然,算法可能比仅仅增加到秘密数字更复杂。
特别注意:这只是一个例子!在实际代码而不是普通代码$parts[2] * $secret1
应该使用对称加密算法!