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


PHP #paip.php #加解密2012-10-29 14:32
主要是要在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

相关文章

粤ICP备11097351号-1