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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。