当前位置:Gxlcms > PHP教程 > paip.PHP实现跨平台跨语言加解密方法

paip.PHP实现跨平台跨语言加解密方法

时间:2021-07-01 10:21:17 帮助过:6人阅读

paip.PHP实现跨平台跨语言加解密方法

主要是要在ASP和PHP系统模块间进行参数传递,为了方便,不用MD5签名,直接准备使用DES

加密。。可是ASP和PHP的DES不能相互加觖密。。。好向还有什么CBC模式,IV向量什么的。一

大堆,调了半天还是不行,算了,还是自己写加密方法吧。。

密码加密主要的方法就是替换,移位。。另外,

我的要求是,
1.需要可以使用密钥
2.需要算法简单,可以很容易用另外一种语言重写。。DES算法一看就是一大陀,MD,难用。

PASS。。。虽然效果好,有点复杂,不好重写啊。。
3.根据强度可以自由组合算法,为了加强加密 效果,可以使用多种翻转算法,这里为了简单,只是

全部翻转了一下而已。。。
4.可以多条密钥使用,可以大大加强效果,不输于DES,3DES一类的。
5.加密非ASCII字符:不可直接加密。。可先用BASE64,URLENCODE转成ASCII字符串再进行

加密就可能邓..

这里,我构思了下加密觖密的思路:

1.先把字符串进行反转
2.把字符串与KEY组进行循环相加
3.相加的结果转为16进制字符连起来。。主要是为了省点空间。。
4.返回结果就可 以了。。。
5.解密的过程反过来就可以了。。

PHP调用演示:
$key="iluvnjyn";
echo atiDecode("D7D5E2DACF",$key); 显示了解密结果“admin"

ASP加密演示:
key_L71723="iluvnjyn"
msg="admin"
newstr=atiEncode(msg,key_L71723) //生成加密结果"D7D5E2DACF"

---------------------------PHP源码------------------

//解密方法
function atiDecode($msg,$key){

$key_L71723= $key;
$key_L71723=$key_L71723.$key_L71723;
$key_L71723=$key_L71723.$key_L71723;
$key_L71723=$key_L71723.$key_L71723;;
$key_L71723=$key_L71723.$key_L71723;;

//$msgarr=explode("-",$msg); //split
$msgarr=str_split($msg,2);
$keyarr= str_split($key_L71723);
$newstr="";

for($i=0;$i< count ($msgarr);$i++){
$v=$msgarr[$i];
$charInt=hexdec($v);// 'encode char
$keychar=$keyarr[$i];
$newchar=chr( $charInt-ord($keychar));

$newstr=$newstr.$newchar;
}
$newstr=strrev($newstr);
//'newstr=base64Encode(newstr)
return $newstr;
}

---------------ASP加密方法源码
function atiEncode(msg,key)

msg=back_str(msg) '反转字符串
dim key_L71723
key_L71723= key
key_L71723=key_L71723+key_L71723
key_L71723=key_L71723+key_L71723
key_L71723=key_L71723+key_L71723
dim msgarr
msgarr=str2array(msg)
dim keyarr
keyarr=str2array(key_L71723)
dim newstr
newstr=""
'与KEY组进行循环相加
for i=0 to ubound(msgarr)
dim char
char=msgarr(i)
dim newchar 'int format
newchar = asc (char)+asc(keyarr(i))
newchar= hex(newchar)

newstr=newstr+cstr(newchar)
next

atiEncode=newstr
end function

人气教程排行