我正在开发一个密码系统,在那里发送电子邮件,他们必须点击链接才能转到重置密码的页面。
链接中有一些信息是加密的,然后据说在另一方面进行了解密。 这是一个例子 http://www.somewebpage.com?p=8e428904890e31a93c563e1f18c11ff6&c=U2FsdGVkX1+LdNFKzCZxRAGPYYA9MGzAhAUh/wLJ3T4=
现在我使用$ _GET [' c']来获取加密数据。 然后我使用我的Decrypt代码解密它。
现在问题就在于此 如果我这样做就可以了
Decrypt($key,"U2FsdGVkX1+LdNFKzCZxRAGPYYA9MGzAhAUh/wLJ3T4=");
它让我回到原始文本。
但如果我这样做。它不起作用
Decrypt($key,$_GET['c']);
它只是给了我一些受损的角色。
问题是,当我使用$ _GET [' c']时,为什么我的加密例程不起作用,如果我直接输入字符串就可以正常工作。
网址是否添加了隐藏的字符? 如果是这样,我可以删除任何添加的内容。
答案 0 :(得分:2)
加密数据包含一些不能正确通过浏览器的字符。
当你生成密钥时,尝试使用函数urlencode()
echo '<a href="mycgi?foo=', urlencode($encryptdata), '">';