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

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

?? myldbcipher.pas

?? 一個本地database引擎,支持中文T_Sql查詢,兼容DELPHI標準數據庫控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
unit MYLDBCipher;

interface

{$I MYLDBVer.Inc}
{$I VER.INC}


uses SysUtils, Classes,MYLDBDecUtil;

const
 Rijndael_Cipher = 1;
 RIPEMD_128_Hash = 0;
 RIPEMD_256_Hash = 1;

 Default_Cipher_Method = Rijndael_Cipher;
 Default_Hash_Method = RIPEMD_128_Hash;

const {ErrorCode's for ECipherException}
  errGeneric        = 0;  {generic Error}
  errInvalidKey     = 1;  {Decode Key is not correct}
  errInvalidKeySize = 2;  {Size of the Key is too large}
  errNotInitialized = 3;  {Methods Init() or InitKey() were not called}
  errInvalidMACMode = 4;  {CalcMAC can't use cmECB, cmOFB}
  errCantCalc       = 5;

type
  ECipherException = class(Exception)
  public
    ErrorCode: Integer;
  end;

type


{all Cipher Classes in this Unit, a good Selection}
  TCipherMode = (cmCTS, cmCBC, cmCFB, cmOFB, cmECB, cmCTSMAC, cmCBCMAC, cmCFBMAC);
{ the Cipher Modes:
  cmCTS     Cipher Text Stealing, a Variant from cmCBC, but relaxes
            the restriction that the DataSize must be a mulitply from BufSize,
            this is the Defaultmode, fast and Bytewise
  cmCBC     Cipher Block Chaining
  cmCFB     K-bit Cipher Feedback, here is K = 8 -> 1 Byte
  cmOFB     K-bit Output Feedback, here is K = 8 -> 1 Byte
  cmECB *   Electronic Codebook, DataSize must be a multiply from BufSize

  cmCTSMAC  Build a Message Authentication Code in cmCTS Mode
  cmCBCMAC  Build a CBC-MAC
  cmCFBMAC  Build a CFB-MAC
}

  TCipherClass = class of TCipher;
//-------- from hash ------------
// hash
 {the Base-Class of all Hashs}
  THash = class(TProtection)
  protected
    class function TestVector: Pointer; virtual; {must override}
    procedure CodeInit(Action: TPAction); override; {TProtection Methods, You can use a Hash to En/Decode}
    procedure CodeDone(Action: TPAction); override; {TProtection Methods}
    procedure CodeBuf(var Buffer; const BufferSize: Integer; Action: TPAction); override; {TProtection Methods}
    procedure Protect(IsInit: Boolean); {calls any installed Protection}
  public
    destructor Destroy; override;
    procedure Init; virtual;
    procedure Calc(const Data; DataSize: Integer); virtual; {must override}
    procedure Done; virtual;
    function DigestKey: Pointer; virtual; {must override}
    function DigestStr(Format: Integer): String;

    class function DigestKeySize: Integer; virtual; {must override}
{$IFDEF VER_D4H} // new features from D4
    class function CalcBuffer(const Buffer; BufferSize: Integer; Protection: TProtection = nil; Format: Integer = fmtDEFAULT): String; overload;
    class function CalcStream(const Stream: TStream; StreamSize: Integer; Protection: TProtection = nil; Format: Integer = fmtDEFAULT): String; overload;
    class function CalcString(const Data: String; Protection: TProtection = nil; Format: Integer = fmtDEFAULT): String; overload;
    class function CalcFile(const FileName: String; Protection: TProtection = nil; Format: Integer = fmtDEFAULT): String; overload;
{$ELSE}
    class function CalcBuffer(const Buffer; BufferSize: Integer; Protection: TProtection; Format: Integer): String;
    class function CalcStream(const Stream: TStream; StreamSize: Integer; Protection: TProtection; Format: Integer): String;
    class function CalcString(const Data: String; Protection: TProtection; Format: Integer): String;
    class function CalcFile(const FileName: String; Protection: TProtection; Format: Integer): String;
{$ENDIF}
{test the correct working}
    class function SelfTest: Boolean;
  end;
{
// HMAC's - Hash Message Authentication Code's
  TMAC = class(TProtection) // generic MAC, encrypt Password with any AProtection and XOR's with
  protected                 // the Initstate from the Hash (DigestKey)
    FPassword: String;      // final Digest is encrypted with AProtecion
    procedure Init(Hash: THash); virtual;    // Only used in all THash Descends
    procedure Done(Hash: THash); virtual;    // Only used in all THash Descends
  public
    constructor Create(const Password: String; AProtection: TProtection);
    destructor Destroy; override;
  end;
}
//-------- from hash end ------------

  THashClass = class of THash;

  TCipher = class(TProtection)
  private
    FMode: TCipherMode;
    FHash: THash;
    FHashClass: THashClass;
    FKeySize: Integer;
    FBufSize: Integer;
    FUserSize: Integer;
    FBuffer: Pointer;
    FVector: Pointer;
    FFeedback: Pointer;
    FUser: Pointer;
    FFlags: Integer;
    function GetHash: THash;
    procedure SetHashClass(Value: THashClass);
  protected
    function GetFlag(Index: Integer): Boolean;
    procedure SetFlag(Index: Integer; Value: Boolean); virtual;
{used in method Init()}
    procedure InitBegin(var Size: Integer);
    procedure InitEnd(IVector: Pointer); virtual;
{must override}
    class procedure GetContext(var ABufSize, AKeySize, AUserSize: Integer); virtual;
    class function TestVector: Pointer; virtual;
{override TProtection Methods}
    procedure CodeInit(Action: TPAction); override;
    procedure CodeDone(Action: TPAction); override;
    procedure CodeBuf(var Buffer; const BufferSize: Integer; Action: TPAction); override;
{the encode function, must override}
    procedure Encode(Data: Pointer); virtual;
{the decode function, must override}
    procedure Decode(Data: Pointer); virtual;
{the individual Userdata and Buffer}
    property User: Pointer read FUser;
    property Buffer: Pointer read FBuffer;
    property UserSize: Integer read FUserSize;
  public
    constructor Create(const Password: String; AProtection: TProtection);
    destructor Destroy; override;
    class function MaxKeySize: Integer;
{performs a Test of correct work}
    class function SelfTest: Boolean;
{initialization form the Cipher}
    procedure Init(const Key; Size: Integer; IVector: Pointer); virtual;
    procedure InitKey(const Key: String; IVector: Pointer);
{reset the Feedbackregister with the actual IVector}
    procedure Done; virtual;
{protect the security Data's, Feedback, Buffer, Vector etc.}
    procedure Protect; virtual;

    procedure EncodeBuffer(const Source; var Dest; DataSize: Integer);
    procedure DecodeBuffer(const Source; var Dest; DataSize: Integer);


{the Cipher Mode = cmXXX}
    property Mode: TCipherMode read FMode write FMode;
{the Current Hash-Object, to build a Digest from InitKey()}
    property Hash: THash read GetHash;
{the Class of the Hash-Object}
    property HashClass: THashClass read FHashClass write SetHashClass;
{the maximal KeySize and BufSize (Size of Feedback, Buffer and Vector}
    property KeySize: Integer read FKeySize;
    property BufSize: Integer read FBufSize;

{Init() was called}
    property Initialized: Boolean index 1 read GetFlag write SetFlag;
{the actual IVector, BufSize Bytes long}
    property Vector: Pointer read FVector;
{the Feedback register, BufSize Bytes long}
    property Feedback: Pointer read FFeedback;
{the Key is set from InitKey() and the Hash.DigestKey^ include the encrypted Hash-Key}
    property HasHashKey: Boolean index 0 read GetFlag;
  end;

// now the Cipher's


function DefaultCipherClass: TCipherClass;
procedure SetDefaultCipherClass(CipherClass: TCipherClass);
procedure RaiseCipherException(const ErrorCode: Integer; const Msg: String);
function RegisterCipher(const ACipher: TCipherClass; const AName, ADescription: String): Boolean;
function UnregisterCipher(const ACipher: TCipherClass): Boolean;
function CipherList: TStrings;
procedure CipherNames(List: TStrings);
function GetCipherClass(const Name: String): TCipherClass;
function GetCipherName(CipherClass: TCipherClass): String;

const
  CheckCipherKeySize: Boolean = False;
{set to True raises Exception when Size of the Key is too large, (Method Init())
 otherwise will truncate the Key, default mode is False}

//------------ from cipher1 -----------
type
  TCipher_Rijndael = class(TCipher)
  private
    FRounds: Integer;
  protected
    class procedure GetContext(var ABufSize, AKeySize, AUserSize: Integer); override;
    class function TestVector: Pointer; override;
    procedure Encode(Data: Pointer); override;
    procedure Decode(Data: Pointer); override;
  public
    procedure Init(const Key; Size: Integer; IVector: Pointer); override;
  end;

  TCipher_Blowfish = class(TCipher)
  private
{$IFDEF UseASM}
  {$IFNDEF 486GE}  // no Support for <= CPU 386
    procedure Encode386(Data: Pointer);
    procedure Decode386(Data: Pointer);
  {$ENDIF}
{$ENDIF}
  protected
    class procedure GetContext(var ABufSize, AKeySize, AUserSize: Integer); override;
    class function TestVector: Pointer; override;
    procedure Encode(Data: Pointer); override;
    procedure Decode(Data: Pointer); override;
  public
    procedure Init(const Key; Size: Integer; IVector: Pointer); override;
  end;

  TCipher_1DES = class(TCipher)
  protected
    class procedure GetContext(var ABufSize, AKeySize, AUserSize: Integer); override;
    class function TestVector: Pointer; override;
    procedure Encode(Data: Pointer); override;
    procedure Decode(Data: Pointer); override;
    procedure MakeKey(const Data : array of byte; Key_1: pointer; Reverse: Boolean);
//  procedure MakeKey(const Data: array of Byte; Key: PInteger; Reverse: Boolean);
  public
    procedure Init(const Key; Size: Integer; IVector: Pointer); override;
  end;

  TCipher_3DES = class(TCipher_1DES)
  protected
    class procedure GetContext(var ABufSize, AKeySize, AUserSize: Integer); override;
    class function TestVector: Pointer; override;
    procedure Encode(Data: Pointer); override;
    procedure Decode(Data: Pointer); override;
  public
    procedure Init(const Key; Size: Integer; IVector: Pointer); override;
  end;

  TCipher_3TDES = class(TCipher_3DES)
  protected
    class procedure GetContext(var ABufSize, AKeySize, AUserSize: Integer); override;
    class function TestVector: Pointer; override;
    procedure Encode(Data: Pointer); override;
    procedure Decode(Data: Pointer); override;
  end;

  TCipher_Twofish = class(TCipher)
  protected
    class procedure GetContext(var ABufSize, AKeySize, AUserSize: Integer); override;
    class function TestVector: Pointer; override;
    procedure Encode(Data: Pointer); override;
    procedure Decode(Data: Pointer); override;
  public
    procedure Init(const Key; Size: Integer; IVector: Pointer); override;
  end;

  TCipher_Square = class(TCipher)
  protected
    class procedure GetContext(var ABufSize, AKeySize, AUserSize: Integer); override;
    class function TestVector: Pointer; override;
    procedure Encode(Data: Pointer); override;
    procedure Decode(Data: Pointer); override;
  public
    procedure Init(const Key; Size: Integer; IVector: Pointer); override;
  end;


//------------ from cipher1 end -----------
//------------ from hash -----------
  THash_MD4 = class(THash)
  private
    FCount: LongWord;
    FBuffer: array[0..63] of Byte;
    FDigest: array[0..9] of LongWord;
  protected
    class function TestVector: Pointer; override;
    procedure Transform(Buffer: PIntArray); virtual;
  public
    class function DigestKeySize: Integer; override;
    procedure Init; override;
    procedure Done; override;
    procedure Calc(const Data; DataSize: Integer); override;
    function DigestKey: Pointer; override;
  end;

  THash_RipeMD128 = class(THash_MD4) {RACE Integrity Primitives Evaluation Message Digest}
  protected
    class function TestVector: Pointer; override;
    procedure Transform(Buffer: PIntArray); override;
  end;

  THash_RipeMD256 = class(THash_MD4)
  protected
    class function TestVector: Pointer; override;
    procedure Transform(Buffer: PIntArray); override;
  public
{DigestKey-Size 256 bit}
    class function DigestKeySize: Integer; override;
    procedure Init; override;
  end;

// check sum
  TChecksum = class(THash);

// general
function DefaultHashClass: THashClass;
procedure SetDefaultHashClass(HashClass: THashClass);
function RegisterHash(const AHash: THashClass; const AName, ADescription: String): Boolean;
function UnregisterHash(const AHash: THashClass): Boolean;
function HashList: TStrings;
procedure HashNames(List: TStrings);
function GetHashClass(const Name: String): THashClass;
function GetHashName(HashClass: THashClass): String;

//------------ from hash end -----------

implementation

uses MYLDBDecConst2, Windows;

{$I cipher1.inc}

const
  FDefaultHashClass: THashClass = THash_RipeMD256;
  FDefaultCipherClass : TCipherClass = TCipher_Rijndael;
  FCipherList         : TStringList  = nil;
  FHashList: TStringList = nil;

function DefaultCipherClass: TCipherClass;
begin
  Result := FDefaultCipherClass;
end;

procedure SetDefaultCipherClass(CipherClass: TCipherClass);
begin
  if CipherClass = nil then FDefaultCipherClass := TCipher_Rijndael
    else FDefaultCipherClass := CipherClass;
end;

procedure RaiseCipherException(const ErrorCode: Integer; const Msg: String);
var
  E: ECipherException;
begin
  E := ECipherException.Create(Msg);
  E.ErrorCode := ErrorCode;
  raise E;
end;

function RegisterCipher(const ACipher: TCipherClass; const AName, ADescription: String): Boolean;
var
  I: Integer;
  S: String;
begin
  Result := False;
  if ACipher = nil then Exit;
  S := Trim(AName);
  if S = '' then
  begin
    S := ACipher.ClassName;
    if S[1] = 'T' then Delete(S, 1, 1);
    I := Pos('_', S);
    if I > 0 then Delete(S, 1, I);
  end;
  S := S + '=' + ADescription;
  I := CipherList.IndexOfObject(Pointer(ACipher));
  if I < 0 then CipherList.AddObject(S, Pointer(ACipher))
    else CipherList[I] := S;
  Result := True;
end;

function UnregisterCipher(const ACipher: TCipherClass): Boolean;
var
  I: Integer;
begin
  Result := False;
  repeat
    I := CipherList.IndexOfObject(Pointer(ACipher));
    if I < 0 then Break;
    Result := True;
    CipherList.Delete(I);
  until False;
end;

function CipherList: TStrings;
begin
  if not IsObject(FCipherList, TStringList) then FCipherList := TStringList.Create;
  Result := FCipherList;
end;

procedure CipherNames(List: TStrings);
var
  I: Integer;
begin
  if not IsObject(List, TStrings) then Exit;
  for I := 0 to CipherList.Count-1 do
    List.AddObject(FCipherList.Names[I], FCipherList.Objects[I]);
end;

function GetCipherClass(const Name: String): TCipherClass;
var
  I: Integer;
  N: String;
begin
  Result := nil;
  N := Name;
  I := Pos('_', N);
  if I > 0 then Delete(N, 1, I);
  for I := 0 to CipherList.Count-1 do
    if AnsiCompareText(N, GetShortClassName(TClass(FCipherList.Objects[I]))) = 0 then
    begin
      Result := TCipherClass(FCipherList.Objects[I]);
      Exit;
    end;
  I := FCipherList.IndexOfName(N);
  if I >= 0 then Result := TCipherClass(FCipherList.Objects[I]);
end;

function GetCipherName(CipherClass: TCipherClass): String;
var
  I: Integer;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美少妇bbb| 在线观看免费亚洲| 欧美一级视频精品观看| 国产精品久久免费看| 日韩极品在线观看| 色哟哟在线观看一区二区三区| 日韩亚洲国产中文字幕欧美| 亚洲乱码中文字幕| 国产成人av电影免费在线观看| 欧美日韩国产高清一区二区三区| 国产精品白丝在线| 经典三级视频一区| 欧美日韩国产成人在线免费| 亚洲美女少妇撒尿| 成人黄色在线视频| 久久亚洲综合色一区二区三区| 亚洲不卡在线观看| 在线观看成人小视频| 中文字幕亚洲成人| 从欧美一区二区三区| 精品国产制服丝袜高跟| 秋霞影院一区二区| 欧美日韩精品一区二区| 亚洲美女偷拍久久| 成人动漫一区二区在线| 久久久不卡网国产精品二区| 捆绑紧缚一区二区三区视频| 91精品久久久久久久99蜜桃 | 91在线视频免费观看| 久久欧美中文字幕| 久久精品国产久精国产| 在线成人av网站| 亚洲成av人片www| 欧美日韩国产电影| 日韩av一级片| 欧美久久一二区| 亚洲成人激情自拍| 欧美日韩国产综合视频在线观看| 一区二区三区久久| 欧美视频完全免费看| 亚洲在线免费播放| 欧美性大战久久| 亚洲最大成人网4388xx| 在线亚洲一区观看| 亚洲一区二区中文在线| 欧美午夜精品理论片a级按摩| 一区二区在线观看视频在线观看| 91极品美女在线| 亚洲综合免费观看高清完整版在线| 91免费视频网址| 一区二区免费在线播放| 欧美日韩一区视频| 五月天丁香久久| 欧美一区二区二区| 国内精品免费在线观看| 国产亚洲欧美一区在线观看| 国产成a人无v码亚洲福利| 国产精品全国免费观看高清| 91亚洲精品久久久蜜桃| 亚洲一区二区三区四区中文字幕| 欧美亚日韩国产aⅴ精品中极品| 亚洲成人一区二区在线观看| 日韩欧美激情一区| 国产麻豆精品视频| 日韩美女视频一区| 欧美日韩一区二区三区四区| 日产国产欧美视频一区精品| 精品国产一区二区三区忘忧草| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 亚洲国产一区二区在线播放| 欧美丰满少妇xxxbbb| 久久99精品久久久| 亚洲国产精品精华液2区45| 91在线国产福利| 亚洲va国产天堂va久久en| 精品日产卡一卡二卡麻豆| 国产69精品久久久久毛片| 亚洲女与黑人做爰| 91麻豆精品国产自产在线观看一区| 精油按摩中文字幕久久| 国产精品国产三级国产有无不卡| 在线观看不卡一区| 久久99国产精品麻豆| 亚洲人成人一区二区在线观看| 精品视频色一区| 国产一区二区三区日韩| 亚洲精品免费看| 日韩免费一区二区| 97se亚洲国产综合自在线观| 日产国产欧美视频一区精品| 中文字幕av一区 二区| 欧美日韩精品电影| 成人午夜av电影| 天天综合色天天| 国产精品毛片高清在线完整版 | 成人午夜激情片| 午夜久久久久久| 国产精品人成在线观看免费 | 欧美午夜不卡在线观看免费| 国产麻豆精品一区二区| 亚洲国产裸拍裸体视频在线观看乱了 | 亚瑟在线精品视频| 欧美韩国日本一区| 51久久夜色精品国产麻豆| 成人黄色综合网站| 毛片基地黄久久久久久天堂| 亚洲日本青草视频在线怡红院| 欧美一区二区三区日韩| 99国产精品国产精品毛片| 久久99精品久久只有精品| 亚洲一区二三区| 国产精品美女久久久久久久久 | 国产精品福利影院| 欧美一级免费大片| 91色porny在线视频| 激情六月婷婷综合| 亚洲va国产天堂va久久en| 中文字幕日韩欧美一区二区三区| 日韩免费高清av| 欧美日韩在线三区| 91在线观看污| 国产91精品免费| 精品一区二区三区免费播放| 亚洲图片欧美色图| 中文字幕综合网| 国产精品天美传媒沈樵| 精品国产乱码久久久久久闺蜜 | 国产一区二区三区高清播放| 婷婷久久综合九色国产成人| 亚洲精品高清在线| 国产精品国产三级国产三级人妇| 久久久电影一区二区三区| 日韩亚洲欧美在线观看| 欧美日韩高清一区二区不卡| 色婷婷亚洲一区二区三区| 福利视频网站一区二区三区| 国内国产精品久久| 麻豆精品在线视频| 日本va欧美va瓶| 又紧又大又爽精品一区二区| 国产精品久久久久一区| 国产喷白浆一区二区三区| 26uuu久久综合| 精品免费日韩av| 日韩一区二区三区免费看 | 日韩一区二区精品葵司在线| 欧美日韩视频在线一区二区| 成人精品高清在线| 亚洲伊人色欲综合网| 一区二区三区精密机械公司| 中文字幕一区二区三区精华液| 欧美经典三级视频一区二区三区| 久久综合久久99| 久久综合久久鬼色中文字| 久久午夜老司机| 久久久不卡网国产精品二区| 久久久久久夜精品精品免费| 久久久久久日产精品| 久久人人97超碰com| 国产午夜亚洲精品午夜鲁丝片| 久久久久9999亚洲精品| 久久久久久久久久久99999| 久久久综合九色合综国产精品| 国产亚洲精品7777| 国产精品色婷婷久久58| 国产精品电影一区二区| 亚洲欧洲性图库| 亚洲黄色免费电影| 五月天网站亚洲| 日本不卡不码高清免费观看| 日本不卡一区二区| 狠狠色丁香久久婷婷综合丁香| 国产一区二区三区最好精华液| 国内成人免费视频| 国产成人免费视| 色综合网站在线| 精品视频123区在线观看| 欧美一级理论片| 久久亚洲一区二区三区四区| 久久精品视频在线看| 久久网这里都是精品| 国产精品无圣光一区二区| 亚洲精品一二三四区| 亚洲国产精品精华液网站| 三级成人在线视频| 国产中文字幕一区| 成人av电影在线网| 在线观看不卡视频| 精品欧美乱码久久久久久1区2区| 国产视频一区在线观看| 自拍视频在线观看一区二区| 亚洲成av人片在www色猫咪| 精品一区二区av| fc2成人免费人成在线观看播放| 在线观看91精品国产入口| 91精品国产综合久久婷婷香蕉| 久久天堂av综合合色蜜桃网| 自拍偷拍欧美精品| 免费精品视频最新在线| 成人av电影在线播放|