欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-06-07 12:35:41
...

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 $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