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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? myldbcipher.pas

?? 一個本地database引擎,支持中文T_Sql查詢,兼容DELPHI標準數(shù)據(jù)庫控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
begin
  I := CipherList.IndexOfObject(Pointer(CipherClass));
  if I >= 0 then Result := FCipherList.Names[I]
    else Result := GetShortClassName(CipherClass);
end;

function TCipher.GetFlag(Index: Integer): Boolean;
begin
  Result := FFlags and (1 shl Index) <> 0;
end;

procedure TCipher.SetFlag(Index: Integer; Value: Boolean);
begin
  Index := 1 shl Index;
  if Value then FFlags := FFlags or Index
    else FFlags := FFlags and not Index;
end;

procedure TCipher.InitBegin(var Size: Integer);
begin
  Initialized := False;
  Protect;
  if Size < 0 then Size := 0;
  if Size > KeySize then
    if not CheckCipherKeySize then Size := KeySize
      else RaiseCipherException(errInvalidKeySize, Format(sInvalidKeySize, [ClassName, 0, KeySize]));
end;

procedure TCipher.InitEnd(IVector: Pointer);
begin
  if IVector = nil then Encode(Vector)
    else Move(IVector^, Vector^, BufSize);
  Move(Vector^, Feedback^, BufSize);
  Initialized := True;
end;

class procedure TCipher.GetContext(var ABufSize, AKeySize, AUserSize: Integer);
begin
  ABufSize := 0;
  AKeySize := 0;
  AUserSize := 0;
end;

class function TCipher.TestVector: Pointer;
begin
  Result := GetTestVector;
end;

procedure TCipher.Encode(Data: Pointer);
begin
end;

procedure TCipher.Decode(Data: Pointer);
begin
end;

constructor TCipher.Create(const Password: String; AProtection: TProtection);
begin
  inherited Create(AProtection);
  FHashClass := DefaultHashClass;
  GetContext(FBufSize, FKeySize, FUserSize);
  GetMem(FVector, FBufSize);
  GetMem(FFeedback, FBufSize);
  GetMem(FBuffer, FBufSize);
  GetMem(FUser, FUserSize);
  Protect;
  if Password <> '' then InitKey(Password, nil);
end;

destructor TCipher.Destroy;
begin
  Protect;
  ReallocMem(FVector, 0);
  ReallocMem(FFeedback, 0);
  ReallocMem(FBuffer, 0);
  ReallocMem(FUser, 0);
  FHash.Release;
  FHash := nil;
  inherited Destroy;
end;

class function TCipher.MaxKeySize: Integer;
var
  Dummy: Integer;
begin
  GetContext(Dummy, Result, Dummy);
end;

class function TCipher.SelfTest: Boolean;
var
  Data: array[0..63] of Char;
  Key: String;
  SaveKeyCheck: Boolean;
begin
  Result       := InitTestIsOk; {have anonyme modified the testvectors ?}
{we will use the ClassName as Key :-)}
  Key          := ClassName;
  SaveKeyCheck := CheckCipherKeySize;
  with Self.Create('', nil) do
  try
    CheckCipherKeySize := False;
    Mode := cmCTS;
    Init(PChar(Key)^, Length(Key), nil);
    EncodeBuffer(GetTestVector^, Data, 32);
    Result := Result and (MemCompare(TestVector, @Data, 32) = 0);
    Done;
    DecodeBuffer(Data, Data, 32);
    Result := Result and (MemCompare(GetTestVector, @Data, 32) = 0);
  finally
    CheckCipherKeySize := SaveKeyCheck;
    Free;
  end;
  FillChar(Data, SizeOf(Data), 0);
end;

procedure TCipher.Init(const Key; Size: Integer; IVector: Pointer);
begin
end;

procedure TCipher.InitKey(const Key: String; IVector: Pointer);
var
  I: Integer;
begin
  Hash.Init;
  Hash.Calc(PChar(Key)^, Length(Key));
  Hash.Done;
  I := Hash.DigestKeySize;
  if I > FKeySize then I := FKeySize; {generaly will truncate to large Keys}
  Init(Hash.DigestKey^, I, IVector);
  EncodeBuffer(Hash.DigestKey^, Hash.DigestKey^, Hash.DigestKeySize);
  Done;
  SetFlag(0, True);
end;

procedure TCipher.Done;
begin
  if MemCompare(FVector, FFeedback, FBufSize) = 0 then Exit;
  Move(FFeedback^, FBuffer^, FBufSize);
  Move(FVector^, FFeedback^, FBufSize);
end;

procedure TCipher.Protect;
begin
  SetFlag(0, False);
  Initialized := False;
// a Crypto Fanatican say: this is better !!
  FillChar(FVector^, FBufSize, $AA);
  FillChar(FFeedback^, FBufSize, $AA);
  FillChar(FBuffer^, FBufSize, $AA);
  FillChar(FUser^, FUserSize, $AA);

  FillChar(FVector^, FBufSize, $55);
  FillChar(FFeedback^, FBufSize, $55);
  FillChar(FBuffer^, FBufSize, $55);
  FillChar(FUser^, FUserSize, $55);

  FillChar(FVector^, FBufSize, $FF);
  FillChar(FFeedback^, FBufSize, $FF);
  FillChar(FBuffer^, FBufSize, 0);
  FillChar(FUser^, FUserSize, 0);
end;

function TCipher.GetHash: THash;
begin
  if not IsObject(FHash, THash) then
  begin
    if FHashClass = nil then FHashClass := DefaultHashClass;
    FHash := FHashClass.Create(nil);
    FHash.AddRef;
  end;
  Result := FHash;
end;

procedure TCipher.SetHashClass(Value: THashClass);
begin
  if Value <> FHashClass then
  begin
    FHash.Release;
    FHash := nil;
    FHashClass := Value;
    if FHashClass = nil then FHashClass := DefaultHashClass;
  end;
end;


procedure TCipher.EncodeBuffer(const Source; var Dest; DataSize: Integer);
var
  S,D,F: PByte;
begin
  if not Initialized then
    RaiseCipherException(errNotInitialized, Format(sNotInitialized, [ClassName]));
  S := @Source;
  D := @Dest;
  case FMode of
    cmECB:
      begin
        if S <> D then Move(S^, D^, DataSize);
        while DataSize >= FBufSize do
        begin
          Encode(D);
          Inc(D, FBufSize);
          Dec(DataSize, FBufSize);
        end;
        if DataSize > 0 then
        begin
          Move(D^, FBuffer^, DataSize);
          Encode(FBuffer);
          Move(FBuffer^, D^, DataSize);
        end;
      end;
    cmCTS:
      begin
        while DataSize >= FBufSize do
        begin
          XORBuffers(S, FFeedback, FBufSize, D);
          Encode(D);
          XORBuffers(D, FFeedback, FBufSize, FFeedback);
          Inc(S, FBufSize);
          Inc(D, FBufSize);
          Dec(DataSize, FBufSize);
        end;
        if DataSize > 0 then
        begin
          Move(FFeedback^, FBuffer^, FBufSize);
          Encode(FBuffer);
          XORBuffers(S, FBuffer, DataSize, D);
          XORBuffers(FBuffer, FFeedback, FBufSize, FFeedback);
        end;
      end;
    cmCBC:
      begin
        F := FFeedback;
        while DataSize >= FBufSize do
        begin
          XORBuffers(S, F, FBufSize, D);
          Encode(D);
          F := D;
          Inc(S, FBufSize);
          Inc(D, FBufSize);
          Dec(DataSize, FBufSize);
        end;
        Move(F^, FFeedback^, FBufSize);
        if DataSize > 0 then
        begin
          Move(FFeedback^, FBuffer^, FBufSize);
          Encode(FBuffer);
          XORBuffers(S, FBuffer, DataSize, D);
          XORBuffers(FBuffer, FFeedback, FBufSize, FFeedback);
        end;
      end;
    cmCFB:
      while DataSize > 0 do
      begin
        Move(FFeedback^, FBuffer^, FBufSize);
        Encode(FBuffer);
        D^ := S^ xor PByte(FBuffer)^;
        Move(PByteArray(FFeedback)[1], FFeedback^, FBufSize-1);
        PByteArray(FFeedback)[FBufSize-1] := D^;
        Inc(D);
        Inc(S);
        Dec(DataSize);
      end;
    cmOFB:
      while DataSize > 0 do
      begin
        Move(FFeedback^, FBuffer^, FBufSize);
        Encode(FBuffer);
        D^ := S^ xor PByte(FBuffer)^;
        Move(PByteArray(FFeedback)[1], FFeedback^, FBufSize-1);
        PByteArray(FFeedback)[FBufSize-1] := PByte(FBuffer)^;
        Inc(D);
        Inc(S);
        Dec(DataSize);
      end;
    cmCTSMAC:
      begin
        while DataSize >= FBufSize do
        begin
          XORBuffers(S, FFeedback, FBufSize, FBuffer);
          Encode(FBuffer);
          XORBuffers(FBuffer, FFeedback, FBufSize, FFeedback);
          Inc(S, FBufSize);
          Dec(DataSize, FBufSize);
        end;
        if DataSize > 0 then
        begin
          Move(FFeedback^, FBuffer^, FBufSize);
          Encode(FBuffer);
          XORBuffers(FBuffer, FFeedback, FBufSize, FFeedback);
        end;
      end;
    cmCBCMAC:
      begin
        while DataSize >= FBufSize do
        begin
          XORBuffers(S, FFeedback, FBufSize, FBuffer);
          Encode(FBuffer);
          Move(FBuffer^, FFeedback^, FBufSize);
          Inc(S, FBufSize);
          Dec(DataSize, FBufSize);
        end;
        if DataSize > 0 then
        begin
          Move(FFeedback^, FBuffer^, FBufSize);
          Encode(FBuffer);
          XORBuffers(FBuffer, FFeedback, FBufSize, FFeedback);
        end;
      end;
    cmCFBMAC:
      while DataSize > 0 do
      begin
        Move(FFeedback^, FBuffer^, FBufSize);
        Encode(FBuffer);
        Move(PByteArray(FFeedback)[1], FFeedback^, FBufSize-1);
        PByteArray(FFeedback)[FBufSize-1] := S^ xor PByte(FBuffer)^;
        Inc(S);
        Dec(DataSize);
      end;
  end;
end;

procedure TCipher.DecodeBuffer(const Source; var Dest; DataSize: Integer);
var
  S,D,F,B: PByte;
begin
  if not Initialized then
    RaiseCipherException(errNotInitialized, Format(sNotInitialized, [ClassName]));
  S := @Source;
  D := @Dest;
  case FMode of
    cmECB:
      begin
        if S <> D then Move(S^, D^, DataSize);
        while DataSize >= FBufSize do
        begin
          Decode(D);
          Inc(D, FBufSize);
          Dec(DataSize, FBufSize);
        end;
        if DataSize > 0 then
        begin
          Move(D^, FBuffer^, DataSize);
          Encode(FBuffer);
          Move(FBuffer^, D^, DataSize);
        end;
      end;
    cmCTS:
      begin
        if S <> D then Move(S^, D^, DataSize);
        F := FFeedback;
        B := FBuffer;
        while DataSize >= FBufSize do
        begin
          XORBuffers(D, F, FBufSize, B);
          Decode(D);
          XORBuffers(D, F, FBufSize, D);
          S := B;
          B := F;
          F := S;
          Inc(D, FBufSize);
          Dec(DataSize, FBufSize);
        end;
        if F <> FFeedback then Move(F^, FFeedback^, FBufSize);
        if DataSize > 0 then
        begin
          Move(FFeedback^, FBuffer^, FBufSize);
          Encode(FBuffer);
          XORBuffers(FBuffer, D, DataSize, D);
          XORBuffers(FBuffer, FFeedback, FBufSize, FFeedback);
        end;
      end;
    cmCBC:
      begin
        if S <> D then Move(S^, D^, DataSize);
        F := FFeedback;
        B := FBuffer;
        while DataSize >= FBufSize do
        begin
          Move(D^, B^, FBufSize);
          Decode(D);
          XORBuffers(F, D, FBufSize, D);
          S := B;
          B := F;
          F := S;
          Inc(D, FBufSize);
          Dec(DataSize, FBufSize);
        end;
        if F <> FFeedback then Move(F^, FFeedback^, FBufSize);
        if DataSize > 0 then
        begin
          Move(FFeedback^, FBuffer^, FBufSize);
          Encode(FBuffer);
          XORBuffers(D, FBuffer, DataSize, D);
          XORBuffers(FBuffer, FFeedback, FBufSize, FFeedback);
        end;
      end;
    cmCFB:
      while DataSize > 0 do
      begin
        Move(FFeedback^, FBuffer^, FBufSize);
        Encode(FBuffer);
        Move(PByteArray(FFeedback)[1], FFeedback^, FBufSize-1);
        PByteArray(FFeedback)[FBufSize-1] := S^;
        D^ := S^ xor PByte(FBuffer)^;
        Inc(D);
        Inc(S);
        Dec(DataSize);
      end;
    cmOFB:
      while DataSize > 0 do
      begin
        Move(FFeedback^, FBuffer^, FBufSize);
        Encode(FBuffer);
        D^ := S^ xor PByte(FBuffer)^;
        Move(PByteArray(FFeedback)[1], FFeedback^, FBufSize-1);
        PByteArray(FFeedback)[FBufSize-1] := PByte(FBuffer)^;
        Inc(D);
        Inc(S);
        Dec(DataSize);
      end;
    cmCTSMAC, cmCBCMAC, cmCFBMAC:
      begin
        EncodeBuffer(Source, Dest, DataSize);
        Exit;
      end;
  end;
end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡的av电影| 美女视频一区二区三区| 欧美日韩激情一区二区三区| 成人综合激情网| 欧美系列亚洲系列| 欧美变态tickling挠脚心| 国产精品免费久久久久| 一区二区三区在线影院| 免费看黄色91| 欧美夫妻性生活| 一本色道综合亚洲| 日韩av中文在线观看| 国内精品免费**视频| 欧美不卡在线视频| 欧美高清在线一区| 亚洲视频在线一区二区| 国产精品久久久久一区二区三区共| 中文字幕一区二区三区不卡| 日韩影院在线观看| 一本久久精品一区二区| 久久精品视频免费| 午夜私人影院久久久久| 成人av在线一区二区三区| 日韩欧美一二三| 欧美aaaaa成人免费观看视频| k8久久久一区二区三区| 国产人妖乱国产精品人妖| 亚洲图片有声小说| 日韩国产欧美在线播放| 国产aⅴ精品一区二区三区色成熟| 欧美理论片在线| 亚洲自拍偷拍网站| 色94色欧美sute亚洲13| 日本强好片久久久久久aaa| 欧美日韩一区二区电影| 中文字幕一区免费在线观看| 国产河南妇女毛片精品久久久| 日韩一级片在线播放| 美国欧美日韩国产在线播放| 6080午夜不卡| 激情国产一区二区| 久久久www成人免费无遮挡大片| 精品一区二区精品| 国产日韩欧美综合一区| 精品国产3级a| 成人在线综合网| 一区二区三区欧美激情| 91精品国产综合久久蜜臀| 美女网站色91| 亚洲黄色尤物视频| 日韩一区二区不卡| 成人听书哪个软件好| 丝袜亚洲精品中文字幕一区| 久久久蜜臀国产一区二区| 91一区二区在线| 国产又黄又大久久| 午夜精品福利一区二区蜜股av| 欧美日韩精品综合在线| 日韩电影在线一区| www.日韩av| 性感美女久久精品| 亚洲色图欧洲色图婷婷| 欧美一级午夜免费电影| 91行情网站电视在线观看高清版| 粉嫩高潮美女一区二区三区| 一本色道久久综合精品竹菊| 欧美视频你懂的| 欧美中文字幕一二三区视频| 亚洲一级片在线观看| 亚洲成人精品在线观看| 日本免费在线视频不卡一不卡二| 精品亚洲aⅴ乱码一区二区三区| 国产高清亚洲一区| 美女在线一区二区| 26uuu国产一区二区三区| 午夜激情一区二区三区| 欧美日韩中文字幕一区二区| 欧美一卡在线观看| 欧美国产禁国产网站cc| 亚洲精品成人精品456| 久久婷婷色综合| 日韩一区二区电影网| 欧美一级黄色录像| 欧美另类久久久品| 69av一区二区三区| 欧美一区二区三区系列电影| 欧美亚洲国产一区二区三区| 国产精品资源在线观看| 婷婷综合久久一区二区三区| 久久久久国产一区二区三区四区| 国产精品免费网站在线观看| 欧美日本视频在线| 69精品人人人人| 欧美日韩在线免费视频| 欧美一区二区播放| 久久九九久久九九| 综合激情成人伊人| 五月天视频一区| 激情综合色综合久久综合| 国产另类ts人妖一区二区| 国产成人欧美日韩在线电影| 99精品国产视频| 欧美日韩国产在线观看| 精品国产乱码久久久久久影片| 亚洲久本草在线中文字幕| 在线电影国产精品| 激情成人综合网| 日韩高清国产一区在线| 国产欧美一区视频| 夜夜操天天操亚洲| 国产精品911| 欧美三级午夜理伦三级中视频| 精品国产一区二区三区四区四| 国产精品乱码一区二三区小蝌蚪| 偷拍日韩校园综合在线| 色综合天天综合在线视频| 国产精品久久久一本精品| 国产一区二区主播在线| 91精品国产一区二区三区蜜臀 | 亚洲国产精品一区二区www在线| 9l国产精品久久久久麻豆| 国产日产亚洲精品系列| 激情文学综合插| 中文字幕成人在线观看| 成人福利视频在线看| 亚洲午夜电影网| 日韩精品一区二区三区四区视频| 国产一区二区在线看| 国产精品美女www爽爽爽| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲综合在线电影| 3atv在线一区二区三区| 婷婷丁香久久五月婷婷| 精品国产一区二区在线观看| 成人av电影在线网| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久精品亚洲一区二区三区浴池| 欧美在线你懂得| 狠狠色丁香婷综合久久| 亚洲视频图片小说| 精品乱码亚洲一区二区不卡| 91在线无精精品入口| 日韩经典一区二区| 一区二区三区在线影院| 久久久av毛片精品| 91精品国产入口| 欧美性高清videossexo| 国产成人精品免费视频网站| 亚洲高清中文字幕| 国产欧美日韩在线看| 欧美大度的电影原声| 欧美性猛交一区二区三区精品| 国产ts人妖一区二区| 日韩高清在线电影| 不卡视频在线看| 国产成人精品亚洲日本在线桃色| 日韩精品欧美精品| 日本在线播放一区二区三区| 午夜av区久久| 国产主播一区二区| 国产69精品久久久久777| www..com久久爱| 色综合色狠狠天天综合色| 欧美日韩午夜影院| 精品国产乱码久久久久久夜甘婷婷| 日韩小视频在线观看专区| 国产亚洲精品资源在线26u| 国产精品卡一卡二卡三| 亚洲国产色一区| 国产乱码精品一区二区三| av一区二区久久| 欧美精品一卡二卡| 国产蜜臀av在线一区二区三区| 日韩欧美一卡二卡| 中文字幕av免费专区久久| 国产精品日韩精品欧美在线| 亚洲日本在线视频观看| 亚洲图片欧美一区| 九色综合国产一区二区三区| 激情综合色播五月| 99国产精品久久久久| 欧美亚洲国产一区在线观看网站| 欧美剧情电影在线观看完整版免费励志电影| 欧美伊人精品成人久久综合97| 欧美酷刑日本凌虐凌虐| 欧美精品一区二区高清在线观看| 欧美国产视频在线| 午夜影视日本亚洲欧洲精品| 亚洲欧美精品午睡沙发| 日韩国产一二三区| 高清久久久久久| 欧美日韩一区成人| 亚洲视频免费观看| 精品中文字幕一区二区小辣椒| 色综合天天做天天爱| 久久久久97国产精华液好用吗 | 亚洲成人免费电影| 成人免费看的视频| 精品久久久久久综合日本欧美| 国产精品久久毛片a|