2011-06-25 40 views
0

我正在加密通過超鏈接發送的變量值,以至於用戶不容易編輯變量。假設我有超鏈接中顯示的值列表。加密/解密,傳遞變量值

<a href="p_view.php?title=<?= hash('sha512', time() + $row['p_id'])]?>"><?=$row['p_name'] ?></a> 

現在我想轉到view.php,我想從題目回來的$row['p_id']值。他們有什麼辦法呢?有什麼其他功能在manage.php上加密並再次解密view.php頁面?

+3

SHA256是散列算法和_not_加密。它不可能再次「解密」。 – KingCrunch

回答

3

你似乎是混亂加密完整性評估

完整性評估
如果你的目的是檢測當用戶修改的URL傳遞的值,一個散列碼(有時被稱爲一個消息摘要校驗),例如因爲用SHA256產品就足夠了。
只需在URL中添加一個額外的參數值和一個哈希碼。這個哈希碼值可以通過向哈希算法提供您希望聲明的完整值(可能沿着額外的祕密「關鍵」值(又名「鹽」))來生成。在收到請求後,首先驗證由URL上的值產生的哈希值與URL的哈希值相匹配;如果它在URL上至少沒有一個值被改變。

加密
如果你的目的是隱藏從用戶和其他人什麼樣的數據/值對URL傳遞,加密是必要的。與散列不同,加密算法可以顛倒並從加密文本中產生原始輸入。
在大多數情況下,加密還可以提供數據完整性驗證,因爲某人難以通過可以將其解密爲結構上有效的文本的方式來更改加密文本。許多加密算法都會改變加密文本中的一個或兩個字節,導致在解密時產生「亂碼」。

切實可行的建議用PHP:

  • 的散列,使用一個:crc32()md5()等。 (或者如問題代碼片段中所示的hash())。
  • 用於從MCrypt module
  • 取決於所使用的算法加密,使用mcrypt_encrypt()/ mcrypt_decrypt(),記得加密輸出的base64或其它格式轉換,使得它可以是一個URL的一部分(多散列和加密方法產生,其中包括敏感的「破」的網址人​​物衆多二進制數據)
+0

謝謝。因爲我對所有這些方法以及功能都很陌生。我研究了每個功能,並發現它們非常安全。這些可能是最好的密碼保護... 關於我的問題..我需要加密3-4位數的變量。我使用'base64_encrypt',但它不適合URL的觀點。由於通過這個加密在URL中給出了=,我不認爲這會更好。 建議我功能,以便我的加密值將以字母數字形式變爲10-15。不只是這個。那是特殊的性格。 在此先感謝。 – Aditii

+0

好吧,對於按字母順序排列的值,它們會以所需的長度進行加密,但它會在某些加密值中給出'='..請理清這個問題。 – Aditii

0

,如果你並不需要更多的祕密加密,請嘗試使用BASE64_ENCODE/BASE64_DECODE

0

如果你只需要數據防竄改您可以使用hash_hmac