1 XXTEA分组加密算法介绍
在密码学中,微型加密算法(Tiny Encryption Algorithm,TEA)是一种易于描述和执行的块密码,通常只需要很少的代码就可实现。其设计者是剑桥大学计算机实验室的大卫·惠勒与罗杰·尼达姆。这项技术最初于1994年提交给鲁汶的快速软件加密的研讨会上,并在该研讨会上演讲中首次发表。
在给出的代码中:加密使用的数据为2个32位无符号整数,密钥为4个32位无符号整数即密钥长度为128位
XTEA是TEA的升级版,增加了更多的密钥表,移位和异或操作等等。
XXTEA,又称Corrected Block TEA,又是XTEA的升级版 。目前XXTEA还暂未被破解。
XXTEA加密算法比较复杂,如果要彻底理解得把引用链接里给出的公式吃透差不多才能理解,这里面又涉及密码学和数学的很多知识,读者实在看不懂也没关系,直接拿去用就行,知道怎么用就可以了。
2 代码实现XXTEAUtil.cs代码实现
using System;
using System.Collections.Generic;
using System.Text;
namespace Servers.Core.Utils
{
public static class XXTEAUtil
{
public static readonly byte[] SoketKey = { 102, 120, 22, 24, 88, 6, 119, 88 };
private static int RightMove(this int value, int pos)
{
if (pos != 0)
{
// int.MaxValue = 0x7FFFFFFF 整数最大值
int mask = int.MaxValue;
//无符号整数最高位不表示正负但操作数还是有符号的,有符号数右移1位,正数时高位补0,负数时高位补1
value = value >> 1;
//和整数最大值进行逻辑与运算,运算后的结果为忽略表示正负值的最高位
value = value & mask;
//逻辑运算后的值无符号,对无符号的值直接做右移运算,计算剩下的位
value = value >> pos - 1;
}
return value;
}
private static int[] ToIntArray(byte[] data, bool includeLenth)
{
int n = (data.Length & 3) == 0 ? (data.Length.RightMove(2)) : (data.Length.RightMove(3)) + 1;
int[] result;
if (includeLenth)
{
result = new int[n + 1];
result[n] = data.Length;
}
else
{
result = new int[n];
}
n = data.Length;
for (int i = 0; i < n; ++i)
{
result[i.RightMove(2)] |= (0x000000ff & data[i])
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?