我正在加密通過超鏈接發送的變量值,以至於用戶不容易編輯變量。假設我有超鏈接中顯示的值列表。加密/解密,傳遞變量值
<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
頁面?
我正在加密通過超鏈接發送的變量值,以至於用戶不容易編輯變量。假設我有超鏈接中顯示的值列表。加密/解密,傳遞變量值
<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
頁面?
你似乎是混亂加密和完整性評估。
完整性評估:
如果你的目的是檢測當用戶修改的URL傳遞的值,一個散列碼(有時被稱爲一個消息摘要或校驗),例如因爲用SHA256產品就足夠了。
只需在URL中添加一個額外的參數值和一個哈希碼。這個哈希碼值可以通過向哈希算法提供您希望聲明的完整值(可能沿着額外的祕密「關鍵」值(又名「鹽」))來生成。在收到請求後,首先驗證由URL上的值產生的哈希值與URL的哈希值相匹配;如果它在URL上至少沒有一個值被改變。
加密:
如果你的目的是隱藏從用戶和其他人什麼樣的數據/值對URL傳遞,加密是必要的。與散列不同,加密算法可以顛倒並從加密文本中產生原始輸入。
在大多數情況下,加密還可以提供數據完整性驗證,因爲某人難以通過可以將其解密爲結構上有效的文本的方式來更改加密文本。許多加密算法都會改變加密文本中的一個或兩個字節,導致在解密時產生「亂碼」。
切實可行的建議用PHP:
,如果你並不需要更多的祕密加密,請嘗試使用BASE64_ENCODE/BASE64_DECODE
如果你只需要數據防竄改您可以使用hash_hmac
SHA256是散列算法和_not_加密。它不可能再次「解密」。 – KingCrunch