亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? class_qqtea.pas.bak

?? QQ掛機DELPHI源碼·服務器和客戶端的編寫~希望對大家有幫助~
?? BAK
?? 第 1 頁 / 共 2 頁
字號:
unit Class_QQTEA;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

{
'QQ TEA-16 Encrypt/Decrypt Class Moudle
'
'由于 www.souker.com 盜用我的源代碼騙錢
'決定陸續公布所有源代碼
'
'Author:  iceboy [366tian]
'         icediy@163.com
'         bbs.366tian.net
'         QQ: 41785691
'
'Thank you:
'         Roy
'         Fish
'         Hisol
'
'And also LumaQQ's source code
'         clsTea's source code
'         clsAES's source code
'         API-Guide
'         Thinking in Java
'         etc.
'

}
Type
   PMyByte=^TMYByte;
   TMYByte=Array [0..500] of byte;
   TQQTEA=Class
   private
     FCurrLen:Integer;

     m_lOnBits:Array [0..30] of integer;
     m_l2Power:Array [0..30] of integer;
     //Plain,PrePlain,OutKey:Array of Byte;
     Plain    :TMYByte;     //指向當前的明文塊
     prePlain :TMYByte;    //指向前面一個明文塊
     OutKey   :TMYByte;    //輸出的密文或者明文
     Crypt,preCrypt :Integer;    //當前加密的密文位置和上一次加密的密文塊位置,他們相差8
     Pos      :Integer;   //當前處理的加密解密塊的位置
     padding:integer;            //填充數

     Key    :Array  of Byte;   //密鑰
     Header :Boolean;            //用于加密時,表示當前是否是第一個8字節塊,因為加密算法
                                 //是反饋的,但是最開始的8個字節沒有反饋可用,所有需要標
                                 //明這種情況
     contextStart:integer;
     procedure Class_Initialize;      //這個表示當前解密開始的位置,之所以要這么一個變量是為了
                                //避免當解密到最后時后面已經沒有數據,這時候就會出錯,這
                                //個變量就是用來判斷這種情況免得出錯


     procedure ClearArray(var Arr:Array of Byte);
     function GetFCurrLen: integer;

   public
     constructor Create;

     Function Rand:Integer;
     procedure Encrypt8Bytes;

     Function Decipher(arrayIn, arrayKey:array of Byte;offset:Integer=0):TMYByte;

     //Function Decipher(arrayIn,arrayKey :array of byte;offset:Integer):TMYByte;

     Function Decrypt8Bytes(arrayIn:array of byte;offset:Integer):Boolean;

     Function Encrypt(arrayIn,arrayKey :array of byte;Var nSendLen:integer;offset:Integer=0):TMYByte;
     Function Decrypt(arrayIn,arrayKey :array of byte;offset:Integer=0):TMYByte;
     Function Encipher(arrayIn,arrayKey:array of Byte;offset:Integer=0):TMYByte;
     //Function Encipher(arrayIn,arrayKey :array of byte;offset:Integer):TMYByte;
     Function LShift(lValue:Longint; iShiftBits:Integer):Integer;
     Function RShift(lValue:Longint; iShiftBits:Integer):Integer;
     Function UnsignedAdd(Data1:integer; Data2:integer):integer;
     Function UnsignedDel(Data1, Data2:integer):integer;

     property CurrLen :integer Read GetFCurrLen; 
   end;

var
  QQTEA:TQQTEA;
  GlobalCurrLen:Integer;

  procedure InitArray(var My:TMyByte);


implementation

Function TQQTEA.Encrypt(arrayIn,arrayKey :array of byte;Var nSendLen:integer;offset:Integer):TMYByte;
var
  i:integer;
  nLen :integer;
  nMyLen:integer;
begin
   Pos :=1;
   Crypt :=0;
   preCrypt := 0;
   nLen :=High(arrayin)+1;

   SetLength(Key,High(arrayKey)+1);
   ClearArray(Key);

   CopyMemory(@Key[0], @arrayKey[0],High(arrayKey)+1);

    Header := True ;
    Pos := (nLen+ 10) Mod 8;
    If Pos <> 0 Then Pos := 8-Pos;
    nSendLen :=nLen + Pos + 10;

    For i:=0 to 499 do
    begin
      OutKey[i]:=0;
      prePlain[i]:=0;
      Plain[i]:=0;
    end;
    Plain[0] := (Rand And $F8) Or Pos;
    For I := 1 To Pos do
        Plain[I] := Rand And $FF;

    For I := 0 To 7 do
        prePlain[i] :=$0;

    Pos := Pos + 1;
    padding := 1;
    While padding < 3 do
    begin
      If Pos < 8 Then
      begin
          Plain[Pos] := Rand And $FF;
          padding    := padding + 1 ;
          Pos        := Pos + 1   ;
      end else if Pos = 8 Then
          Encrypt8Bytes;
    end;
    I := offset;   // 頭部填充完了,這里開始填真正的明文了,也是滿了8字節就加密,一直到明文讀完
    While nLen > 0 do
    begin
      If Pos < 8 Then
      begin
          Plain[Pos] := arrayIn[I];
          I := I + 1;
          Pos := Pos + 1;
          nLen := nLen - 1;
      end else if Pos = 8 Then
          Encrypt8Bytes
    end;

    padding := 1;         // 最后填上0,以保證是8字節的倍數
    While padding < 9 do
    begin
      If Pos < 8 Then
      begin
          Plain[Pos] := $0;
          Pos := Pos + 1;
          padding := padding + 1
      end else If Pos = 8 Then
          Encrypt8Bytes
    end;
    //SetLength(Result,High(OutKey)+1);
    //CopyMemory(@Result[0],@OutKey[0],High(OutKey)+1);
    CopyMemory(@Result[0],@OutKey[0], nSendLen);



    //Result := OutKey;
end;


Function TQQTEA.Decrypt(arrayIn,arrayKey :array of byte;offset:Integer):TMYByte;
var
   m:array of byte;
   I :Integer;
   Count :Integer;
   nLen :integer;
begin
    If (High(arrayIn) < 15) Or (((High(arrayIn)+1) Mod 8) <> 0) Then Exit ;
    //If High(arrayKey) <> 15 Then Exit ;
    SetLength(m,offset + 8);
    SetLength(Key,16);
    CopyMemory(@Key[0], @arrayKey[0],16);
    Crypt    := 0;
    preCrypt := 0;
    prePlain := Decipher(arrayIn, arrayKey, offset);
    Pos := prePlain[0] And $7;
    Count:= High(arrayIn)- Pos - 8;
    nLen := High(arrayIn)- Pos - 8;
    If Count < 0 Then Exit ;
    //SetLength(OutKey,Count ); //**
    preCrypt := 0 ;
    Crypt    := 8 ;
    contextStart := 8;
    Pos := Pos + 1;
    padding := 1 ;
    While padding < 3 do
    begin
        If Pos < 8 Then
        begin
            Pos := Pos + 1;
            padding := padding + 1;
        end Else If Pos = 8 Then
        begin
              SetLength(m,high(arrayIn)+1);
              CopyMemory(@m[0], @arrayIn[0], High(m)+ 1);
              If not Decrypt8Bytes(arrayIn, offset) Then Exit;
        end;
    end;
    I := 0;
    While Count <> 0 do
    begin
        If Pos < 8 Then
        begin
            OutKey[I] := m[offset + preCrypt + Pos] Xor prePlain[Pos];
            I := I + 1 ;
            Count := Count - 1;
            Pos   := Pos + 1;
        end  Else If Pos = 8 Then
          begin
            //m := arrayIn; //**
            SetLength(m,High(arrayin)+1);//**

            CopyMemory(@m[0],@arrayin[0],High(arrayin)+1);
            preCrypt := Crypt - 8;
            If not Decrypt8Bytes(arrayIn, offset) Then Exit ;
          end
    end;
    For i:=1 To 7 do
    begin
        If Pos < 8 Then
        begin
            If (m[offset + preCrypt + Pos] Xor prePlain[Pos]) <> 0 Then Exit;
            Pos := Pos + 1;
        end else If Pos = 8 Then
          begin
            CopyMemory(@m[0], @arrayIn[0], High(m) + 1);
            preCrypt := Crypt;
            If not Decrypt8Bytes(arrayIn, offset) Then Exit;
          end;
    end;

 
    //SetLength(Result,High(OutKey)+1);
    //Result :=OutKey;

    CopyMemory(@Result[0],@OutKey[0],nLen);
    FCurrLen :=nLen;

    //Result := OutKey;
end;

procedure TQQTEA.Encrypt8Bytes;
var
  Crypted:TMYByte;
  I :Integer;
begin
    For i :=0 To 7 do
    begin
        If Header Then
            Plain[i] := Plain[i] Xor prePlain[i]
        Else
            Plain[i] := Plain[i] Xor OutKey[preCrypt + i];
    end;
    
    //**
    Crypted := Encipher(Plain,Key);

    For I := 0 To 7 do
        OutKey[Crypt + I] := Crypted[I];

    For i :=0 To 7 do
        OutKey[Crypt + i] := OutKey[Crypt + i] Xor prePlain[i];

    //prePlain := Plain;
    CopyMemory(@PrePlain[0],@Plain[0],8);
    preCrypt := Crypt;
    Crypt    := Crypt + 8;
    Pos := 0;
    Header := False
end;



Function TQQTEA.Decrypt8Bytes(arrayIn:array of byte;offset:Integer):Boolean;
var
  i:integer;
begin
    For i:=0  To 7 do
    begin
        If (contextStart + i) > (High(arrayIn)) Then
        begin
            Result:=True;
            Exit;
        end;
        prePlain[i] := prePlain[i] Xor arrayIn[offset + Crypt + i];
    end;
    try
    //**
      prePlain := Decipher(prePlain, Key);
    except
     Result := False;
     Exit;
    end;
    contextStart := contextStart + 8;
    Crypt := Crypt + 8;
    Pos   := 0;
    Result:= True;
end;


//Function Encipher(arrayIn:TMYByte;arrayKey:Array [0..30] of integer ;offset:Integer):TMYByte;
//Function Encipher:TMYByte;
Function TQQTEA.Encipher(arrayIn,arraykey:Array of Byte;offset:Integer):TMYByte;
var
    I,y,z,a,b,c,d:Longword;
    sum,delta :Longword;
    tmpArray :Array [0..23] of Byte;
    //tmpOut :Array [0..7] of Byte;
    tmpOut :TMYByte;

begin
   { If High(arrayIn) < 7 Then Exit ;
    If High(arrayKey) < 15 Then Exit ;
    sum := 0;
    delta := $9E3779B9;
    delta := delta And $FFFFFFFF;
    CopyMemory(@y,@arrayIn[0],4);
    CopyMemory(@z,@arrayIn[4],4);
    CopyMemory(@a,@arrayKey[0],4);
    CopyMemory(@b,@arrayKey[4],4);
    CopyMemory(@c,@arrayKey[8],4);
    CopyMemory(@d,@arrayKey[12],4);

    For I := 1 To 16 do
    begin
        sum := sum+delta;
        sum := sum And $FFFFFFFF;
        y :=Y+((z shl 4) + a) xor (z + sum) xor ((z shr 5) + b);
        y :=Y and $FFFFFFFF;
        z :=Z+((y shl 4) + c) xor (y + sum) xor ((y shr 5) + d);
        z :=z and $FFFFFFFF;
    end;
   
    SetLength(Result,8);
    Y:=Integer(Y);
    Z:=Integer(Z);
    CopyMemory(@Result[0],@y,4);
    CopyMemory(@Result[4],@z,4);  }

    If High(arrayIn) < 7 Then Exit ;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一区二区三区福利 | 国产亚洲欧美在线| 国产一区二区中文字幕| 成人黄色电影在线| 欧美一区二区三区男人的天堂 | 欧美一区二区免费视频| 欧美国产综合一区二区| 亚洲国产成人va在线观看天堂| 蜜臀久久99精品久久久画质超高清 | 91国产视频在线观看| 91精品欧美福利在线观看| 欧美激情一区二区三区蜜桃视频| 午夜精品一区二区三区电影天堂 | 91免费国产在线| 久久丝袜美腿综合| 视频一区二区中文字幕| 一本色道久久综合亚洲91| 久久蜜桃一区二区| 久久国产麻豆精品| 欧美欧美午夜aⅴ在线观看| 亚洲欧美日韩国产中文在线| 国产精品一区二区久久不卡 | 91首页免费视频| 国产欧美一区二区精品仙草咪| 日韩高清中文字幕一区| 欧美亚洲高清一区| 亚洲色图.com| 91尤物视频在线观看| 国产精品国产三级国产普通话蜜臀| 欧美怡红院视频| 一区二区三区四区亚洲| 99国产精品久久久久| 国产精品美女久久福利网站| 高清shemale亚洲人妖| 久久精品亚洲一区二区三区浴池| 久久精品免费观看| 精品国产伦一区二区三区观看方式| 蜜桃视频在线一区| 日韩欧美国产一二三区| 麻豆精品国产91久久久久久| 日韩一区二区三区高清免费看看 | 欧美日韩国产色站一区二区三区| 一区二区三区四区中文字幕| 91久久人澡人人添人人爽欧美| 亚洲精品一二三| 在线观看不卡视频| 亚洲妇女屁股眼交7| 欧美一区二区在线观看| 免费观看在线色综合| 精品国产一区二区三区忘忧草| 狠狠色综合播放一区二区| 久久亚洲综合色| av亚洲精华国产精华精华| 综合精品久久久| 欧美精品一二三区| 国产一区福利在线| 日韩理论片网站| 日韩一区和二区| 国产不卡免费视频| 亚洲综合精品自拍| 欧美一级久久久| 懂色一区二区三区免费观看 | 青娱乐精品在线视频| 久久只精品国产| 97国产精品videossex| 亚洲va天堂va国产va久| xnxx国产精品| 日本道在线观看一区二区| 美女视频黄a大片欧美| 欧美国产精品久久| 欧美日韩国产美| 国产精品白丝av| 亚洲成av人片一区二区| 久久精品视频在线看| 国产亚洲一区二区三区四区| 一本色道综合亚洲| 激情欧美一区二区| 亚洲一区中文日韩| 久久久久久久精| 欧美丝袜自拍制服另类| 国产一区二区91| 视频一区中文字幕| 中文字幕一区二区三区在线观看 | 精品福利在线导航| 色嗨嗨av一区二区三区| 国产做a爰片久久毛片| 亚洲国产美女搞黄色| 欧美国产一区在线| 精品少妇一区二区三区在线播放 | 91麻豆精品国产无毒不卡在线观看| 国产激情视频一区二区在线观看| 亚洲成av人片在线| 最新久久zyz资源站| 精品盗摄一区二区三区| 欧美日韩五月天| 一本一道久久a久久精品| 国产成人综合亚洲91猫咪| 天天影视色香欲综合网老头| 亚洲人成精品久久久久久 | 国产一区二区在线观看视频| 亚洲一区二区三区四区五区中文| 国产午夜亚洲精品午夜鲁丝片| 欧美精品亚洲二区| 在线精品视频免费观看| 91麻豆免费观看| 成人黄色一级视频| 成人免费毛片aaaaa**| 国产精品一级片在线观看| 久久99久久久欧美国产| 日本中文一区二区三区| 爽好多水快深点欧美视频| 亚洲午夜私人影院| 亚洲一区二区三区视频在线播放| 最近中文字幕一区二区三区| 欧美国产禁国产网站cc| 久久久久久免费网| 久久精品这里都是精品| 国产香蕉久久精品综合网| 国产日产欧美精品一区二区三区| 精品国产乱码91久久久久久网站| 日韩美女一区二区三区| 精品少妇一区二区三区日产乱码| 日韩欧美国产系列| 欧美精品一区二区三区在线播放 | 狠狠色综合色综合网络| 国产一区视频导航| 国产福利91精品一区| 国产一本一道久久香蕉| 丁香婷婷深情五月亚洲| 成人精品视频一区二区三区 | 国产一区三区三区| 国产不卡一区视频| 91在线观看视频| 欧美日韩国产乱码电影| 中文字幕精品综合| 日韩一区有码在线| 亚洲电影激情视频网站| 麻豆一区二区99久久久久| 国产一区二区三区不卡在线观看| 国产成人a级片| 91免费国产在线| 91精品国产综合久久精品麻豆| 日韩三区在线观看| 国产精品私人自拍| 亚洲一区二区三区在线看| 日本不卡免费在线视频| 国产主播一区二区| 色综合久久久久| 日韩欧美中文一区二区| 中文字幕av一区二区三区免费看| 亚洲免费三区一区二区| 奇米精品一区二区三区四区| 懂色av一区二区三区免费观看| 色综合久久88色综合天天6| 欧美一级精品大片| 欧美激情一区二区三区不卡| 亚洲成a人v欧美综合天堂下载| 韩日欧美一区二区三区| 日本黄色一区二区| 欧美精品一区二区久久婷婷| 亚洲品质自拍视频| 激情文学综合插| 色播五月激情综合网| 久久久亚洲高清| 午夜精品123| 成人av网在线| 精品国产制服丝袜高跟| 一区二区三区日本| 国产精品系列在线播放| 欧美亚洲国产bt| 国产精品初高中害羞小美女文| 日本 国产 欧美色综合| 色综合天天综合在线视频| 精品成人一区二区| 亚洲成av人片在线观看| 97久久超碰国产精品| 久久―日本道色综合久久| 三级精品在线观看| 色婷婷综合视频在线观看| 国产亚洲va综合人人澡精品| 91国模大尺度私拍在线视频| 国产欧美日韩麻豆91| 久久精品国产成人一区二区三区 | 欧美日韩精品免费观看视频 | 色偷偷久久人人79超碰人人澡| 久久久亚洲精华液精华液精华液| 视频一区欧美精品| 在线观看日韩一区| 亚洲色图19p| 91浏览器入口在线观看| 国产拍揄自揄精品视频麻豆| 狠狠色狠狠色综合日日91app| 欧美在线观看禁18| 亚洲欧美日韩精品久久久久| 99久久免费国产| 中文字幕一区在线观看视频| 播五月开心婷婷综合| 国产精品久久久久婷婷| 成人性视频免费网站| 日本一区二区免费在线|