我正在加密通过超链接发送的变量值,以至于用户不容易编辑变量。假设我有超链接中显示的值列表。加密/解密,传递变量值
<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