最近在学习开发php5.x扩展,就拿xxtea加密算法来练手;
此扩展采用国外的xxtea加密算法,配合md5、base64,实现php下可逆加密功能;
扩展函数:
xxtea加密函数
function xxtea_encode(string $str, string $key[, bool $is_base64])
parameter:
$str: 需加密的内容,可以是二进制内容
$key: 密钥
$is_base64[可选]: 结果是否进行base64编码,默认为true
return: [二进制|字符串]
xxtea解密函数
function xxtea_decode($str, $key[, $is_base64])
parameter:
$str: 需解密的内容,可以是二进制内容
$key: 密钥
$is_base64[可选]: 密文是否base64编码过,默认为true
return: [二进制|字符串]
扩展源码下载:php_xxtea.zip
BUG: 当加密的字符长度小于2,无法加密,返回原值
有关tea算法资料:http://en.wikipedia.org/wiki/XXTEA
算法描述:
“微型加密算法(TEA)及其相关变种(XTEA,Block TEA,XXTEA) 都是分组加密算法,它们很容易被描述,实现也很简单(典型的几行代码)。
TEA 算法最初是由剑桥计算机实验室的 David Wheeler 和 Roger Needham 在 1994 年设计的。该算法使用 128 位的密钥为 64 位的信息块进行加密,它需要进行 64 轮迭代。该算法使用了一个神秘常数δ作为倍数,它来源于黄金比率,以保证每一轮加密都不相同。但δ的精确值似乎并不重要,这里 TEA 把它定义为 δ=「(√5 – 1)231」(也就是程序中的 0×9E3779B9 )。”
其实,TEA跟我们的关系非常密切,因为QQ就是使用16轮迭代的TEA算法。
XXTEA是其最新的变种,于1998年提出。目前还没有人找到对其进行攻击的方法,是对前面一些变种的改进。XXTEA 算法很安全,而且非常快速,非常适合应用于 Web 开发中。
