2017-05-13 136 views
-2

我試圖在php中創建一個管理頁面,我希望管理員不能看到真正的IP,只能加密。我試圖做到這一點,因爲用戶說,如果管理員可以看到他們的真實IP不好,並可以做它不好的事情。 我想僅從ip加密一個或兩個部分,例如127.0.x.1或127.x.1,並且x被加密。這可能嗎?加密和解密IP

+1

是的,它是完全可能的。 – Terry

+0

管理員可以訪問數據庫嗎?如果沒有,只需在請求獲取用戶數據時用隨機字母替換。 –

+0

不,管理員無法訪問數據庫。是的,我可以用隨機字母來替換,但是這些字母必須與該IP相關聯,因爲我使用隨機字母來查看用戶日誌,如/profile/iplog/127.x.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應該使用對稱密碼算法!

+0

這不是加密,沒有密鑰。 – zaph

+0

@zaph,這是使用密鑰$ secret1和$ secret2進行加密的最簡單情況:-) –

+0

男人,你明白單詞'example'嗎? –

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); 
}