项目中有时咱们必须运用PHP将特定的信息进行加密,亦便是经过加密算法生成一个加密字符串,这些加密后的字符串能够经过解密算法进行解密,便于程序对解密后的信息进行处理。
最平常的应用在用户登录以及有些API数据交换的场景。最平常的应用在用户登录以及有些API数据交换的场景。加密解密原理通常都是经过必定的加密解密算法,将密钥加入到算法中,最后得到加密解密结果。
废话不多说,直接上代码。
1、第1种针针对ID的可逆加密函数,亦能够用作于邀请码之类的,解密后的数据比较简单
示例:lockcode(28)=》000X unlockcode(000X)=》28
//加密函数
function lockcode($code) {
static $source_string = E5FCDG3HQA4B1NOPIJ2RSTUV67MWX89KLYZ;
$num = $code;
$code = ;
while ( $num > 0) {
$mod = $num % 35;
$num = ($num - $mod) / 35;
$code = $source_string[$mod].$code;
}
if(empty($code[3]))
$code = str_pad($code,4,0,STR_PAD_LEFT);
return $code;
}
//解密函数
function unlockcode($code) {
static $source_string = E5FCDG3HQA4B1NOPIJ2RSTUV67MWX89KLYZ;
if (strrpos($code, 0) !== false)
$code = substr($code, strrpos($code, 0)+1);
$len = strlen($code);
$code = strrev($code);
$num = 0;
for ($i=0; $i < $len; $i++) {
$num += strpos($source_string, $code[$i]) * pow(35, $i);
}
return $num;
}
2、第二种是加密函数是我在网上搜索来的,很好用,可逆加密,支持盐值参数
示例:
encrypt(abcd,1234)=》nkiV93IfJ decrypt(nkiV93IfJ,1234)=》abcd
//加密函数
function encrypt($data,$key=CHENI){
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
$nh = rand(0,64);
$ch = $chars[$nh];
$mdKey = md5($key.$ch);
$mdKey = substr($mdKey,$nh%8, $nh%8+7);
$data= base64_encode($data);
$tmp = ;
$i=0;$j=0;$k = 0;
for ($i=0; $i<strlen($data); $i++) {
$k = $k == strlen($mdKey) ? 0 : $k;
$j = ($nh+strpos($chars,$data[$i])+ord($mdKey[$k++]))%64;
$tmp .= $chars[$j];
}
return urlencode($ch.$tmp);
}
//解密函数
|