谁有QQ的Tea的加密delphi源代码
解决方案 »
- mfc遍历注册表
- win7 注册表 HKEY_CLASSES_ROOT 文件关联 VC6.0
- 一个多线程同时下载多个文件的问题。貌似是线程出错了。
- [VC界面开发]谁做过google talk界面开发实例?我也要做!有开发过的人帮帮忙!提供资料的送100分!
- 请教一段代码,文件读写的!
- 主线程中创建另一线程用于显示进度显示窗口,为啥不行呢?
- 欢迎讨论,PhotoShop插件技术的实现!发言有分!
- 两个HOOK问题和一个键盘问题
- 如何在combobox控件中增加check控件
- 请问为什么C++编译器不允许使用存储在const指针里的地址来建立一个非Const指针,而反之则可以?我实在不能。例子如下:
- 在VC6下如何使用FlashWindowEx?
- 昨天系统挂了,重新装了系统,可是到哪里去下载VS6.0英文企业版啊?
//力,加密速度也比DES快得多,而且对64位数据加密的密钥长达128位,安全性相当好。
// v[2] : 64bit data, k[4] : 128bit key
var
TEA_a,TEA_b,TEA_c,TEA_d:DWord;
procedure InitTEA;
var
Key:PDWord;
begin
Key:=@MyCryptKeyBuf[0]; //128Bit长的密钥缓冲区
TEA_a:=Key^;
Inc(DWord(Key),4);
TEA_b:=Key^;
Inc(DWord(Key),4);
TEA_c:=Key^;
Inc(DWord(Key),4);
TEA_d:=Key^;
end;
procedure TEA_Encipher(v:PDWord); //参数为待加密缓冲区的指针
var
y,z,Sum,Delta,n:DWord;
begin
y:=v^;
z:=PDWord(DWord(v)+SizeOf(DWord))^;
Sum:=0;
Delta:=$9E3779B9;
n:=32;
while n>0 do
begin
Dec(n);
Inc(Sum,Delta);
Inc(y,(z shl 4)+TEA_a xor z+sum xor(z shr 5)+TEA_b);
Inc(z,(y shl 4)+TEA_c xor y+sum xor(y shr 5)+TEA_d);
end;
v^:=y;
PDWord(DWord(v)+SizeOf(DWord))^:=z;
end;
procedure TEA_Decipher(v:PDWord); //...解密.....
var
y,z,Sum,Delta,n:DWord;
begin
y:=v^;
z:=PDWord(DWord(v)+SizeOf(DWord))^;
Sum:=$C6EF3720;
Delta:=$9E3779B9;
n:=32;
while n>0 do
begin
Dec(n);
Dec(z,(y shl 4)+TEA_c xor y+sum xor(y shr 5)+TEA_d);
Dec(y,(z shl 4)+TEA_a xor z+sum xor(z shr 5)+TEA_b);
Dec(Sum,Delta);
end;
v^:=y;
PDWord(DWord(v)+SizeOf(DWord))^:=z;
end;
//注:上面的TEA算法仅能对长度为8的整数倍的文件进行加密