-1

我有一个东西要加密并通过 URL 中的 get 传递,我要加密的值类似于“019230132_15/10/2012”(带下划线的数字,后跟巴西格式的日期),当我加密这个值时,我得到类似“cMZns2q7U2vgD9t+zufUeKextc/WyuFB4WyVMQ=”的东西,但是通过 GET 在 url 上传递这个给我带来了问题,因为浏览器认为值中间的“/”是目录分隔符,我的加密算法类似于:

base64_encode(
    mcrypt_encrypt(
        MCRYPT_RIJNDAEL_256,
        md5(self::ENCRYPT_SALT),
        $value,
        MCRYPT_MODE_CBC,
        md5(md5(self::ENCRYPT_SALT))
    )
);

我什至不想知道为什么会这样,我只是想要某种方法来加密和解密一个值,它不一定是有史以来最安全的方式,因为我提供的信息并不值得麻烦破解它。

EDIT1:使用 PHP 函数 urlencode 不起作用,我收到错误 404,因为 url_encode 将 '/' 转换为 '%2F',我认为值得一提的是我在我的 Apache 上使用了 mod_rewrite

EDIT2:设法使 urlencode 像 urlencode(urlencode($value)) 一样使用它两次,并解码两次以获得原始值

4

1 回答 1

2

如果您要在 PHP 中创建值(即,将链接从 PHP 传递到浏览器,就像a标签一样),请首先使用 PHP 的urlencode

但是,如果您使用 JavaScript,请使用 javascript 的转义函数,尤其是encodeURIComponent

于 2012-11-30T19:07:00.957 回答