使用Mcrypt加密值正在使用目录分隔符

时间:2012-11-30 19:02:47

标签: php apache mod-rewrite encryption mcrypt

我有一些我想要加密的东西并通过URL中的get传递它,我要加密的值类似于'019230132_15 / 10/2012'(带有下划线的数字,后跟巴西的日期)格式),当我加密这个值时,我会得到类似'cMZns2q7U2vgD9t + zufUeKextc / WyuFB4WyVMQ ='的内容,但是通过网址上的GET传递这个问题会让我产生问题,因为浏览器认为值中间的'/'是一个目录分隔符,我的encription算法类似于:

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)),并解码两次以获得原始值

1 个答案:

答案 0 :(得分:2)

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

但是,如果您使用的是JavaScript,请使用javascript的escape functions,尤其是encodeURIComponent