我正在处理一个应用程序而且我被困在这里。
我正在制作产品删除页面,其中id在URL中传递,以便我可以搜索数据库并选择特定记录。 因为传递id裸体不是一个好主意,因此我正在加密哈希中的id然后传递。但是由于散列之间有一些空格,当我尝试在我的应用程序中使用它时...在散列中添加空格字符以填充空格。
这是我的加密功能: -
function getHash($recordid)
{
global $db;
$key_value="12466X@@";
$plain_text=$recordid;
$encrypted_text = mcrypt_ecb(MCRYPT_DES, $key_value, $plain_text, MCRYPT_ENCRYPT);
return $encrypted_text;
}
当我没有传入URL并只是打印它时,这是$ plain_text = 1的输出。
ÑÛo‡Ó‰-7
但是,如果我通过URL传递它,它会转换为: -
%D1%DBo%87%D3%89-7
因此,当我解密它时,我肯定无法得到正确的结果。 有什么办法可以在解密之后得到原始值(本例中为1),或者我可以完全使用不同的解密,加密函数以便我摆脱这个问题吗?
谢谢。
答案 0 :(得分:0)
由于这些都是8位字符,因此当它们被编码时,它们将被转换为它们的%XX十六进制表示。当Web服务器位于URL的Query部分时,Web服务器会反向执行,因此您应该没问题。尽管如此,在创建一个URL之前对加密的字符串进行base64编码更安全,并在你获取它时对它进行base64解码,因此你只需要处理ascii字符。