一个不错的PHP加密类
时间:2010-01-01
来源:互联网
引用
<?php
/* XXTEA encryption arithmetic library.
*
* Copyright (C) 2006 Ma Bingyao <[email protected]>
* Version: 1.5
* LastModified: Dec 5, 2006
* This library is free. You can redistribute it and/or modify it.
*/
class xxtea {
function long2str($v, $w) {
$len = count($v);
$n = ($len - 1) << 2;
if ($w) {
$m = $v[$len - 1];
if (($m < $n - 3) || ($m > $n)) return false;
$n = $m;
}
$s = array();
for ($i = 0; $i < $len; $i++) {
$s[$i] = pack("V", $v[$i]);
}
if ($w) {
return substr(join('', $s), 0, $n);
}
else {
return join('', $s);
}
}
function str2long($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;
}
function xxtea_encrypt($str, $key) {
if ($str == "") {
return "";
}
$v = $this->str2long($str, true);
$k = $this->str2long($key, false);
$max=count($k);
$i=0;
$j=0;
while(isset($v[$i]))
{
if($v[$i]==0)
{
$i++;
continue;
}
$v[$i] = $v[$i] ^ $k[$j];
$i++;
$j++;
if($j==$max)
{
$i--;
$v[$i] = $v[$i] ^ $i;
$i++;
$j=0;
}
}
return $this->long2str($v, false);
}
function xxtea_decrypt($str, $key) {
if ($str == "") {
return "";
}
$v = $this->str2long($str, false);
$k = $this->str2long($key, false);
$max=count($k);
$i=0;
$j=0;
while(isset($v[$i]))
{
if($v[$i]==0)
{
$i++;
continue;
}
$v[$i] = $v[$i] ^ $k[$j];
$i++;
$j++;
if($j==$max)
{
$i--;
$j--;
$v[$i] = $v[$i] ^ $k[$j];
$v[$i] = $v[$i] ^ $i;
$v[$i] = $v[$i] ^ $k[$j];
$i++;
$j=0;
}
}
return $this->long2str($v, true);
}
}
作者: 我要公仔 发布时间: 2010-01-01
$n = ($len - 1) << 2;
是什么意思,就是“<<”看不懂。
是什么意思,就是“<<”看不懂。
作者: level_level 发布时间: 2010-01-01
怎么使用,最好搞个例子看看
作者: xfxuxin 发布时间: 2010-01-01
XXTEA加密算法。。。。。额。。很古老的一中
作者: cain 发布时间: 2010-01-01
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28