PHP实现的XXTEA加密解密算法示例
本文实例讲述了PHP实现的XXTEA加密解密算法。分享给大家供大家参考,具体如下:
$n))
returnfalse;
$n=$m;
}
$s=array();
for($i=0;$i<$len;$i++)
$s[$i]=pack("V",$v[$i]);
return$w?substr(implode('',$s),0,$n):implode('',$s);
}
privatefunctionstr2long($s,$w){
$v=unpack("V*",$s.str_repeat("/0",(4-strlen($s)%4)&3));
$v=array_values($v);
if($w)
$v[count($v)]=strlen($s);
return$v;
}
privatefunctionint32($n){
while($n>=2147483648)
$n-=4294967296;
while($n<=2147483649)
$n+=4294967296;
return(int)$n;
}
publicfunctionencrypt($str,$key){
if($str=='')
return'';
$v=$this->str2long($str,true);
$k=$this->str2long($key,false);
if(count($k)<4)
for($i=count($k);$i<4;$i++)
$k[$i]=0;
$n=count($v)-1;
$z=$v[$n];
$y=$v[0];
$delta=0x9E3779B9;
$q=floor(6+52/($n+1));
$sum=0;
while(0<$q--){
$sum=$this->int32($sum+$delta);
$e=$sum>>2&3;
for($p=0;$p<$n;$p++){
$y=$v[$p+1];
$mx=$this->int32((($z>>5&0x07ffffff)^$y<<2)+(($y>>3&0x1fffffff)^$z<<4))^$this->int32(($sum^$y)+($k[$p&3^$e]^$z));
$z=$v[$p]=$this->int32($v[$p]+$mx);
}
$y=$v[0];
$mx=$this->int32((($z>>5&0x07ffffff)^$y<<2)+(($y>>3&0x1fffffff)^$z<<4))^$this->int32(($sum^$y)+($k[$p&3^$e]^$z));
$z=$v[$n]=$this->int32($v[$n]+$mx);
}
return$this->long2str($v,false);
}
publicfunctiondecrypt($str,$key){
if($str=='')
return'';
$v=$this->str2long($str,false);
$k=$this->str2long($key,false);
if(count($k)<4)
for($i=count($k);$i<4;$i++)
$k[$i]=0;
$n=count($v)-1;
$z=$v[$n];
$y=$v[0];
$delta=0x9E3779B9;
$q=floor(6+52/($n+1));
$sum=$this->int32($q*$delta);
while($sum!=0){
$e=$sum>>2&3;
for($p=$n;$p>0;$p--){
$z=$v[$p-1];
$mx=$this->int32((($z>>5&0x07ffffff)^$y<<2)+(($y>>3&0x1fffffff)^$z<<4))^$this->int32(($sum^$y)+($k[$p&3^$e]^$z));
$y=$v[$p]=$this->int32($v[$p]-$mx);
}
$z=$v[$n];
$mx=$this->int32((($z>>5&0x07ffffff)^$y<<2)+(($y>>3&0x1fffffff)^$z<<4))^$this->int32(($sum^$y)+($k[$p&3^$e]^$z));
$y=$v[0]=$this->int32($v[0]-$mx);
$sum=$this->int32($sum-$delta);
}
return$this->long2str($v,true);
}
}
//用法测试:
$strDemo="www.nhooo.com";
$key="123456";
$pwd=newXxtea();
$pwdrel=$pwd->encrypt($strDemo,$key);
echo$pwdrel;
echo"
";
echo$pwd->decrypt($pwdrel,$key);
?>
运行结果:
{���H(�S��7*�u7U
www.nhooo.com
PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:
在线RSA加密/解密工具:
http://tools.jb51.net/password/rsa_encode
文字在线加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode
在线散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha
在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php加密方法总结》、《PHP编码与转码操作技巧汇总》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《php正则表达式用法总结》
希望本文所述对大家PHP程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。