加密和解密字符串。

在项目中遇到需要加密URL中一个参数,碰过过一些问题。

在网上看到两个函数。

//加密。$key为自己任意设定的一个字符(数字,字母),$plain_text为需要加密的字符串。
function encrypt($key, $plain_text) {
    $plain_text = trim($plain_text);
    $iv = substr(md5($key), 0,mcrypt_get_iv_size(MCRYPT_CAST_256,MCRYPT_MODE_CFB));
    $c_t = mcrypt_cfb (MCRYPT_CAST_256, $key, $plain_text, MCRYPT_ENCRYPT, $iv);
    return trim(chop(base64_encode($c_t)));
}

//解密。$key同上,自己设定加密的key,$c_t 为经过encrypt加密过的字符串,返回的为加密前的字符串。
function decrypt($key, $c_t) {
    $c_t = trim(chop(base64_decode($c_t)));
    $iv = substr(md5($key), 0,mcrypt_get_iv_size (MCRYPT_CAST_256,MCRYPT_MODE_CFB));
    $p_t = mcrypt_cfb (MCRYPT_CAST_256, $key, $c_t, MCRYPT_DECRYPT, $iv);
    return trim(chop($p_t));
}

可以用上面两个函数能够较安全的加密和解密。

注意一:如果,也像我一样,加密的字符串需要经过URL经过GET的方式传到php页面。需要把加密后的字符串使用urlencode转码一下:

callback.php?uid='.urlencode(encrypt("timerchina",$_PG['uid'])).'&loginname='.urlencode(encrypt("timerchina",$_PG['loginname']))

但是在callback.php不需要使用 urldecode解编码,因为浏览器已经自动的解码了,不然会出问题的。

像下面这样,就可以了。

$uid = decrypt('timerchina',$_PG["uid"]);

$_SESSION['loginName'] = decrypt('timerchina',$_PG["loginname"]);

注意二:$key的值的设定和需要加密的字符串,,有时候容易出现加密后无法解密的问题。

比如$key为 "timer",$plain_text为z开头的字符串。比如:zero123、会出现加密后无法解密的问题,具体原因不清楚。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值