谁有QQ的Tea的加密delphi源代码

解决方案 »

  1.   

    //TEA是一种优秀的数据加密算法,虽然它比DES要简单得多,但有很强的抗差分分析能
    //力,加密速度也比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的整数倍的文件进行加密
      

  2.   

    //注:上面的TEA算法仅能对长度为8的整数倍的文件进行加密