- 浏览: 128345 次
- 性别:
- 来自: 福建
文章分类
最新评论
Class Xxtea { public function encrypt($s, $key) { return base64_encode(self :: xxtea_encrypt($s, $key)); } public function decrypt($e, $key) { return self :: xxtea_decrypt(base64_decode($e), $key); } private 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); } } private 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; } private function int32($n) { while ($n >= 2147483648) $n -= 4294967296; while ($n <= -2147483649) $n += 4294967296; return (int) $n; } private function xxtea_encrypt($str, $key) { if ($str == "") { return ""; } $v = self :: str2long($str, true); $k = self :: 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 = self :: int32($sum + $delta); $e = $sum >> 2 & 3; for ($p = 0; $p < $n; $p++) { $y = $v[$p +1]; $mx = self :: int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ self :: int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z)); $z = $v[$p] = self :: int32($v[$p] + $mx); } $y = $v[0]; $mx = self :: int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ self :: int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z)); $z = $v[$n] = self :: int32($v[$n] + $mx); } return self :: long2str($v, false); } private function xxtea_decrypt($str, $key) { if ($str == "") { return ""; } $v = self :: str2long($str, false); $k = self :: 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 = self :: int32($q * $delta); while ($sum != 0) { $e = $sum >> 2 & 3; for ($p = $n; $p > 0; $p--) { $z = $v[$p -1]; $mx = self :: int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ self :: int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z)); $y = $v[$p] = self :: int32($v[$p] - $mx); } $z = $v[$n]; $mx = self :: int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ self :: int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z)); $y = $v[0] = self :: int32($v[0] - $mx); $sum = self :: int32($sum - $delta); } return self :: long2str($v, true); } }
评论
1 楼
Sobfist
2013-01-22
我想问有没有java的实现呢? 请指教 我网上的xxtea的java实现 和base64结合使用 结果老是在解密的时候报错。如果博主有的话 请回复我谢谢了
发表评论
-
PHP判断一个请求是AJAX请求还是普通请求
2012-04-20 16:56 1231条件:使用jquery框架 原理:在jquery框架中,对于 ... -
PHP XDebug扩展
2012-04-18 09:28 1121XDebug 是一个 php 代码的调试工具, 对程序员调试程 ... -
用P3P header解决iframe跨域访问cookie[各种语言]
2012-04-17 14:27 2033各种语言在头文件中, ... -
PHP高级工程师的面试题
2012-04-13 18:12 9151. 基本知识点 HTTP协议中几个状态码的含义:50 ... -
用 memcache 来存储 session
2012-03-05 14:27 988PECL :: Package :: memc ... -
用Zend Studio 快速生成WSDL文件
2011-08-08 17:48 5877最近在写webservice接口,最麻烦的是WSDL文件。以前 ... -
header()函数的应用
2011-02-10 12:00 910备注:使用header()函数前,不能有任何输出,前面放个ob ... -
多维对象转数组
2011-01-12 17:20 778static function object_to_arra ... -
PHP异常处理
2010-12-20 17:33 783/** * PHP异常处理 * * PHP 5 添加了类 ... -
快捷打印变量
2010-12-17 15:06 799function e() { $color = '' ... -
PHP字符串处理函数大全
2010-09-03 10:13 774AddSlashes: 字符串加入斜线。bin2hex: 二进 ... -
interface与abstract的区别
2010-08-06 14:08 10391.相同点: A. 两者都是 ... -
多维数组转化成对象
2010-06-11 13:33 905# 把数组转化成对象 function array_to_o ... -
遍历文件夹下的所有文件和子文件夹
2010-04-23 11:39 863function my_scandir($dir) { ... -
header中Content-type的种类
2010-04-22 00:01 1509Content-type 的说明:'hqx' -> 'a ... -
PHP扩展CURL的用法
2010-04-13 15:05 11141、使用CURL模拟POST表单提交 <?php / ... -
文件操作函数
2010-03-26 12:27 722/** * 读文件 +---------------- ... -
汉字转换成拼音
2010-03-26 12:21 1241<? /* * 把汉字,词转成汉语拼音及拼音缩写,如 ... -
获取客户端IP地址
2010-03-26 12:05 862<?php function getip() { ... -
echo 的另一种写法
2010-03-26 12:01 1013<?php $a="变量的值将被带入&quo ...
相关推荐
总结来说,XXtea/aes加密解密工具结合了XXtea和AES两种加密算法,利用OpenSSL库提供强大的加密能力,同时支持lua语言集成,适用于游戏开发和数据保护场景。通过使用这样的工具,开发者可以更便捷地对文件和数据进行...
TEA(Tiny Encryption Algorithm)是一种小型的对称加密解密算法,支持128位密码,与BlowFish一样TEA每次只能加密/解密8字节数据。TEA特点是速度快、效率高,实现也非常简单。由于针对TEA的攻击不断出现,所以TEA也发展出...
XXTEA(Extreme eXtended TEA,极度扩展的TEA)是一种对称加密算法,由David Wheeler和Roger Needham在1994年提出,是对Tiny Encryption Algorithm(TEA)的改进版本。TEA虽然简洁,但在某些情况下可能不够安全,而...
XXTEA(Extreme eXtended TEA,极度扩展的TEA)是一种对称加密算法,由David Wheeler和Roger Needham在1994年提出,是对Tiny Encryption Algorithm(TEA)的改进版本。它提供了更好的安全性和效率,被广泛用于软件和...
XXTEA(Extreme eXtended TEA,极度扩展的TEA)是一种对称加密算法,主要用于简单且高效的数据加密。这个"XXTEA用于加密算法库JavaScript"的压缩包包含了一个JavaScript实现的XXTEA加密库,名为"xxtea-js-master"。...
基于Java开发的数据加密解密工具,可对字符串和文件类型进行加密解密,支持AES、DES和3DES三种常用的对称加密算法。
XXTEA(Extreme eXtended TEA)是一种对称加密算法,由David Wheeler和Roger Needham在1994年提出,是对TEA(Tiny Encryption Algorithm)的增强版本。它设计简洁,易于实现,适合在资源有限的环境中使用,如嵌入式...
XXTEA(eXtended XTEA)是一种对称加密算法,它是在原始XTEA(块大小为64位的简单数据加密标准)基础上进行改进的。在物联网(IoT)设备,特别是基于Arduino平台的项目中,数据安全是至关重要的。xxtea-lib是一个...
XXTEA算法是一种迭代对称加密算法,其特点包括简单的结构,易于硬件实现,并且软件实现代码短小,具有良好的可移植性。这些特点使得XXTEA非常适合用于资源受限的嵌入式RFID系统。XXTEA算法的加密轮次取决于数据长度...
常见的加密算法包括对称加密和非对称加密。 1. 对称加密:在这种方法中,加密和解密使用相同的密钥。例如,DES(Data Encryption Standard)、3DES(Triple DES)和AES(Advanced Encryption Standard)都是常用的...
标题中的“AES加密、解密”指的是Advanced Encryption Standard(高级加密标准),这是一种广泛使用的对称加密算法,用于保护数据的安全性。AES具有高效性和安全性,适用于大量数据的加密,尤其在Linux和Windows操作...
XXTEA(Extreme eXtended TEA)是一种快速、简单且相对安全的对称加密算法,由David J. Wheeler和Roger M. Needham在1994年提出。它是TEA(Tiny Encryption Algorithm)的增强版本,修复了TEA算法的一些安全漏洞,并...
XXTEA算法是一种高效、简洁的微积分加密算法,由David Wheeler和Roger Needham于1994年提出,主要用于短数据块的加密。在给定的“xxtea.rar_XXTEA”压缩包中,我们可以看到一个名为“hello”的文件,这可能是用XXTEA...
本资源包“crypto-js加密解密资源包(含所有前台加密的js代码)”正是为了解决这一问题而设计的,它提供了一系列JavaScript实现的加密算法,适用于那些无法访问Google服务,无法轻易获取此类库的开发者。 首先,...
这个名为"ARM 加解密功能算法.zip_AES-NI arm_arm aes_oncevfy_widelyks2_wonderfulnm"的压缩包提供了一个针对ARM架构优化的加密库,主要包含对称和非对称加密算法的实现。 1. **AES-NI (Advanced Encryption ...
XXTEA(eXtended eXtended TEA)是一种非对称加密算法,它的设计目标是为了解决TEA(Tiny Encryption Algorithm)算法在特定攻击下的安全性问题。XXTEA采用了四轮的加法轮换操作,通过精心设计的密钥调度和数据操作...
5. **XXTEA算法**:XXTEA是一种对称密钥加密算法,由David Wheeler和Ross J. Anderson在1994年提出,特点是速度快,安全性相对较高。在"xxtea_experiment.exe"这个文件中,很可能包含了一个使用XXTEA算法进行解密的...
XXTEA(Extreme eXtended eXtremely Fast Data Encryption Algorithm)是一种简单的对称加密算法,由David Wheeler和Roger Needham在1998年提出。它主要用于解决微小数据块的加密问题,比如在嵌入式系统或资源有限的...
XXTea是一种对称加密算法,它以其高效和简洁的实现而受到许多开发者的青睐,尤其是在Delphi等编程环境中。本文将深入探讨XXTea在Delphi中的实现,并结合源码进行详细解析。 XXTea算法是基于块密码设计的,它的基本...
在这个方案中,涉及到了多种JavaScript库和技术,包括键盘模拟(keyboard.js)、大整数操作(BigInt.js)、Base64编码(base64.js)、XXTEA加密算法(xxtea.js)、RSA非对称加密(RSA.js)以及Barrett模除法...