删除这些额外的字符

时间:2014-02-19 17:49:46

标签: php encryption

我正在处理一个应用程序而且我被困在这里。

我正在制作产品删除页面,其中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),或者我可以完全使用不同的解密,加密函数以便我摆脱这个问题吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

由于这些都是8位字符,因此当它们被编码时,它们将被转换为它们的%XX十六进制表示。当Web服务器位于URL的Query部分时,Web服务器会反向执行,因此您应该没问题。尽管如此,在创建一个URL之前对加密的字符串进行base64编码更安全,并在你获取它时对它进行base64解码,因此你只需要处理ascii字符。

相关问题