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

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

?? md5ctrl.~pas

?? SMGSession,一個短信網關接口代碼
?? ~PAS
字號:
{*******************************************************}
{                                                       }
{              荊鵬億信分公司SP系統                     }
{                                }
{                   MD5運算單元                         }
{                                                       }
{         程序員:張子偉    2004.2.03                   }
{                                                       }
{  版權 (c)  2003-2004 荊鵬軟件開發有限公司       }
{                                                       }
{*******************************************************}
unit MD5Ctrl;

interface
uses
  Windows,Classes;


type
  MD5Count = array[0..1] of DWORD;
  MD5State = array[0..3] of DWORD;
  MD5Block = array[0..15] of DWORD;
  MD5CBits = array[0..7] of byte;
  MD5Digest = array[0..15] of byte;
  MD5Buffer = array[0..63] of byte;
  MD5Context = record
    State: MD5State;
    Count: MD5Count;
    Buffer: MD5Buffer;
  end;

  TJPMD5=class(TComponent)
  private
     PADDING:MD5Buffer;
     function F(x, y, z: DWORD): DWORD;
     function G(x, y, z: DWORD): DWORD;
     function H(x, y, z: DWORD): DWORD;
     function I(x, y, z: DWORD): DWORD;
     procedure rot(var x: DWORD; n: BYTE);
     procedure FF(var a: DWORD; b, c, d, x: DWORD; s: BYTE; ac: DWORD);
     procedure GG(var a: DWORD; b, c, d, x: DWORD; s: BYTE; ac: DWORD);
     procedure HH(var a: DWORD; b, c, d, x: DWORD; s: BYTE; ac: DWORD);
     procedure II(var a: DWORD; b, c, d, x: DWORD; s: BYTE; ac: DWORD);
     procedure Encode(Source, Target: pointer; Count: longword);
     procedure Decode(Source, Target: pointer; Count: longword);
     procedure Transform(Buffer: pointer; var State: MD5State);
     procedure MD5Init(var Context: MD5Context);
     procedure MD5Update(var Context: MD5Context; Input: pChar; Length: longword);
     procedure MD5Final(var Context: MD5Context; var Digest: MD5Digest);
  public
     function MD5Buf(M:pchar;Count:byte): MD5Digest;
     function MD5Str(str:string):string;
     function MD5Print(D: MD5Digest): string;
     constructor create(AOwner: TComponent);override;
  end;

implementation

function TJPMD5.F(x, y, z: DWORD): DWORD;
begin
  Result:=(x and y) or ((not x) and z);
end;

function TJPMD5.G(x, y, z: DWORD): DWORD;
begin
  Result:=(x and z) or (y and (not z));
end;

function TJPMD5.H(x, y, z: DWORD): DWORD;
begin
  Result:=x xor y xor z;
end;

function TJPMD5.I(x, y, z: DWORD): DWORD;
begin
  Result:=y xor (x or (not z));
end;

procedure TJPMD5.rot(var x: DWORD; n: BYTE);
begin
  x:=(x shl n) or (x shr (32-n));
end;

procedure TJPMD5.FF(var a: DWORD; b, c, d, x: DWORD; s: BYTE; ac: DWORD);
begin
  inc(a, F(b, c, d) + x + ac);
  rot(a, s);
  inc(a, b);
end;

procedure TJPMD5.GG(var a: DWORD; b, c, d, x: DWORD; s: BYTE; ac: DWORD);
begin
  inc(a, G(b, c, d) + x + ac);
  rot(a, s);
  inc(a, b);
end;

procedure TJPMD5.HH(var a: DWORD; b, c, d, x: DWORD; s: BYTE; ac: DWORD);
begin
  inc(a, H(b, c, d) + x + ac);
  rot(a, s);
  inc(a, b);
end;

procedure TJPMD5.II(var a: DWORD; b, c, d, x: DWORD; s: BYTE; ac: DWORD);
begin
  inc(a, I(b, c, d) + x + ac);
  rot(a, s);
  inc(a, b);
end;

procedure TJPMD5.Encode(Source, Target: pointer; Count: longword);
var
  S: PByte;
  T: PDWORD;
  I: longword;
begin
  S := Source;
  T := Target;
  for I := 1 to Count div 4 do
  begin
    T^ := S^;
    inc(S);
    T^ := T^ or (S^ shl 8);
    inc(S);
    T^ := T^ or (S^ shl 16);
    inc(S);
    T^ := T^ or (S^ shl 24);
    inc(S);
    inc(T);
  end;
end;

procedure TJPMD5.Decode(Source, Target: pointer; Count: longword);
var
  S: PDWORD;
  T: PByte;
  I: longword;
begin
  S := Source;
  T := Target;
  for I := 1 to Count do
  begin
    T^ := S^ and $ff;
    inc(T);
    T^ := (S^ shr 8) and $ff;
    inc(T);
    T^ := (S^ shr 16) and $ff;
    inc(T);
    T^ := (S^ shr 24) and $ff;
    inc(T);
    inc(S);
  end;
end;

procedure TJPMD5.Transform(Buffer: pointer; var State: MD5State);
var
  a, b, c, d: DWORD;
  Block: MD5Block;
begin
  Encode(Buffer, @Block, 64);
  a := State[0];
  b := State[1];
  c := State[2];
  d := State[3];
  FF (a, b, c, d, Block[ 0],  7, $d76aa478);
  FF (d, a, b, c, Block[ 1], 12, $e8c7b756);
  FF (c, d, a, b, Block[ 2], 17, $242070db);
  FF (b, c, d, a, Block[ 3], 22, $c1bdceee);
  FF (a, b, c, d, Block[ 4],  7, $f57c0faf);
  FF (d, a, b, c, Block[ 5], 12, $4787c62a);
  FF (c, d, a, b, Block[ 6], 17, $a8304613);
  FF (b, c, d, a, Block[ 7], 22, $fd469501);
  FF (a, b, c, d, Block[ 8],  7, $698098d8);
  FF (d, a, b, c, Block[ 9], 12, $8b44f7af);
  FF (c, d, a, b, Block[10], 17, $ffff5bb1);
  FF (b, c, d, a, Block[11], 22, $895cd7be);
  FF (a, b, c, d, Block[12],  7, $6b901122);
  FF (d, a, b, c, Block[13], 12, $fd987193);
  FF (c, d, a, b, Block[14], 17, $a679438e);
  FF (b, c, d, a, Block[15], 22, $49b40821);
  GG (a, b, c, d, Block[ 1],  5, $f61e2562);
  GG (d, a, b, c, Block[ 6],  9, $c040b340);
  GG (c, d, a, b, Block[11], 14, $265e5a51);
  GG (b, c, d, a, Block[ 0], 20, $e9b6c7aa);
  GG (a, b, c, d, Block[ 5],  5, $d62f105d);
  GG (d, a, b, c, Block[10],  9,  $2441453);
  GG (c, d, a, b, Block[15], 14, $d8a1e681);
  GG (b, c, d, a, Block[ 4], 20, $e7d3fbc8);
  GG (a, b, c, d, Block[ 9],  5, $21e1cde6);
  GG (d, a, b, c, Block[14],  9, $c33707d6);
  GG (c, d, a, b, Block[ 3], 14, $f4d50d87);
  GG (b, c, d, a, Block[ 8], 20, $455a14ed);
  GG (a, b, c, d, Block[13],  5, $a9e3e905);
  GG (d, a, b, c, Block[ 2],  9, $fcefa3f8);
  GG (c, d, a, b, Block[ 7], 14, $676f02d9);
  GG (b, c, d, a, Block[12], 20, $8d2a4c8a);
  HH (a, b, c, d, Block[ 5],  4, $fffa3942);
  HH (d, a, b, c, Block[ 8], 11, $8771f681);
  HH (c, d, a, b, Block[11], 16, $6d9d6122);
  HH (b, c, d, a, Block[14], 23, $fde5380c);
  HH (a, b, c, d, Block[ 1],  4, $a4beea44);
  HH (d, a, b, c, Block[ 4], 11, $4bdecfa9);
  HH (c, d, a, b, Block[ 7], 16, $f6bb4b60);
  HH (b, c, d, a, Block[10], 23, $bebfbc70);
  HH (a, b, c, d, Block[13],  4, $289b7ec6);
  HH (d, a, b, c, Block[ 0], 11, $eaa127fa);
  HH (c, d, a, b, Block[ 3], 16, $d4ef3085);
  HH (b, c, d, a, Block[ 6], 23,  $4881d05);
  HH (a, b, c, d, Block[ 9],  4, $d9d4d039);
  HH (d, a, b, c, Block[12], 11, $e6db99e5);
  HH (c, d, a, b, Block[15], 16, $1fa27cf8);
  HH (b, c, d, a, Block[ 2], 23, $c4ac5665);
  II (a, b, c, d, Block[ 0],  6, $f4292244);
  II (d, a, b, c, Block[ 7], 10, $432aff97);
  II (c, d, a, b, Block[14], 15, $ab9423a7);
  II (b, c, d, a, Block[ 5], 21, $fc93a039);
  II (a, b, c, d, Block[12],  6, $655b59c3);
  II (d, a, b, c, Block[ 3], 10, $8f0ccc92);
  II (c, d, a, b, Block[10], 15, $ffeff47d);
  II (b, c, d, a, Block[ 1], 21, $85845dd1);
  II (a, b, c, d, Block[ 8],  6, $6fa87e4f);
  II (d, a, b, c, Block[15], 10, $fe2ce6e0);
  II (c, d, a, b, Block[ 6], 15, $a3014314);
  II (b, c, d, a, Block[13], 21, $4e0811a1);
  II (a, b, c, d, Block[ 4],  6, $f7537e82);
  II (d, a, b, c, Block[11], 10, $bd3af235);
  II (c, d, a, b, Block[ 2], 15, $2ad7d2bb);
  II (b, c, d, a, Block[ 9], 21, $eb86d391);
  inc(State[0], a);
  inc(State[1], b);
  inc(State[2], c);
  inc(State[3], d);
end;

procedure TJPMD5.MD5Init(var Context: MD5Context);
begin
  with Context do
  begin
    State[0] := $67452301;
    State[1] := $efcdab89;
    State[2] := $98badcfe;
    State[3] := $10325476;
    Count[0] := 0;
    Count[1] := 0;
    ZeroMemory(@Buffer,SizeOf(MD5Buffer));
  end;
end;

procedure TJPMD5.MD5Update(var Context: MD5Context; Input: pChar; Length: longword);
var
  Index: longword;
  PartLen: longword;
  I: longword;
begin
  with Context do
  begin
    Index :=(Count[0] shr 3) and $3f;
    inc(Count[0], Length shl 3);
    if Count[0] < (Length shl 3) then inc(Count[1]);
    inc(Count[1], Length shr 29);
  end;
  PartLen :=64-Index;

  if Length >= PartLen then
  begin
    CopyMemory(@Context.Buffer[Index],Input,PartLen);
    Transform(@Context.Buffer, Context.State);
    I := PartLen;
    while (I + 63)< Length do
    begin
      Transform(@Input[I], Context.State);
      inc(I,64);
    end;
    Index:=0;
  end else I:=0;

  CopyMemory(@Context.Buffer[Index],@Input[I],Length-I);
end;

procedure TJPMD5.MD5Final(var Context: MD5Context; var Digest: MD5Digest);
var
  Bits: MD5CBits;
  Index: longword;
  PadLen: longword;
begin
  Decode(@Context.Count, @Bits, 2);
  Index :=(Context.Count[0] shr 3) and $3f;
  if Index < 56 then PadLen:=56-Index
  else PadLen:=120-Index;
  MD5Update(Context,@PADDING,PadLen);
  MD5Update(Context,@Bits,8);
  Decode(@Context.State,@Digest,4);
  ZeroMemory(@Context,SizeOf(MD5Context));
end;

function TJPMD5.MD5Buf(M:pchar;Count:byte): MD5Digest;
var
  Context: MD5Context;
begin
  MD5Init(Context);
  MD5Update(Context,M,Count);
  MD5Final(Context,Result);
end;

function TJPMD5.MD5Print(D:MD5Digest): string;
var
  I: byte;
const
  Digits:array[0..15] of char =
         ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
begin
  Result :='';
  for I := 0 to 15 do Result :=Result+Digits[(D[I] shr 4) and $0f] + Digits[D[I] and $0f];
end;

function TJPMD5.MD5Str(str:string):string;
begin
  result:=md5print(MD5Buf(pchar(str),Length(str)));
end;

constructor TJPMD5.create(AOwner: TComponent);
begin
  inherited;
  FillChar(PADDING,64,0);
  PADDING[0]:=$80;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文无字幕一区二区三区 | 精品成人免费观看| 99综合电影在线视频| 日韩精品欧美精品| 亚洲人成精品久久久久久 | 日韩欧美一区二区免费| 在线亚洲欧美专区二区| 波多野洁衣一区| 久久精品国产精品青草| 亚洲一卡二卡三卡四卡| 精品精品欲导航| 99久久婷婷国产综合精品| 一区二区三区不卡在线观看| 91精品黄色片免费大全| 精品中文字幕一区二区| 天天色 色综合| 国产精品女主播在线观看| 日韩欧美中文一区二区| 欧洲一区二区三区在线| 亚洲bt欧美bt精品777| 自拍偷拍亚洲欧美日韩| 日韩女同互慰一区二区| 欧美性猛交xxxxxx富婆| 国产不卡一区视频| 九一久久久久久| 日韩精品欧美成人高清一区二区| 精品国产伦一区二区三区观看体验 | 国产精品久久久久婷婷| 日韩欧美不卡一区| 制服丝袜一区二区三区| 欧美三级在线播放| 韩国一区二区三区| 国产成人免费视频精品含羞草妖精| 一区二区视频在线看| 国产精品免费视频网站| 中文字幕欧美区| 亚洲男人天堂av| 亚洲免费视频中文字幕| 亚洲免费av在线| 亚洲另类春色校园小说| 亚洲午夜久久久久| 日本人妖一区二区| 久久国产精品99久久久久久老狼 | 正在播放一区二区| 欧美一区二区在线看| 久久久久国产一区二区三区四区| 国产三级欧美三级日产三级99| 欧美激情中文不卡| 国产乱人伦偷精品视频免下载| 亚洲第一主播视频| 亚洲精品一卡二卡| 日产精品久久久久久久性色| 久久99九九99精品| 97精品国产露脸对白| 欧美性极品少妇| 欧美激情中文字幕| 五月天丁香久久| 99精品欧美一区| 欧美成人激情免费网| 一区二区三区精品视频在线| 美女视频免费一区| 国产一区二区免费视频| 欧洲日韩一区二区三区| 国产视频不卡一区| 国产黄人亚洲片| 丁香网亚洲国际| 99久久国产综合精品麻豆| 欧美美女喷水视频| 欧美精品一区视频| 亚洲人123区| 美女任你摸久久| 粉嫩绯色av一区二区在线观看| 欧美精品亚洲二区| 夜夜爽夜夜爽精品视频| 白白色 亚洲乱淫| 中文字幕va一区二区三区| 国产精品 日产精品 欧美精品| 91美女视频网站| 国产日韩欧美精品综合| 久久精品国产一区二区三区免费看 | 欧美日韩国产天堂| 亚洲午夜国产一区99re久久| 成人手机在线视频| 欧美精三区欧美精三区| 久久激情五月婷婷| 日本一区二区三区dvd视频在线 | 中文在线一区二区| 91亚洲永久精品| 亚洲国产成人av网| 日韩欧美色综合网站| 国产91露脸合集magnet| 久久蜜桃av一区二区天堂| 国产美女av一区二区三区| 精品动漫一区二区三区在线观看| 日日夜夜免费精品| 欧美性受xxxx| 蜜桃久久av一区| 亚洲美女一区二区三区| 亚洲精品在线免费观看视频| 国产麻豆日韩欧美久久| 日本一区二区三级电影在线观看| 大桥未久av一区二区三区中文| 欧美一区二区在线观看| 精品一区二区免费| 亚洲欧美一区二区三区久本道91| 欧美精品久久久久久久久老牛影院| 国产91丝袜在线18| 欧美aaaaaa午夜精品| 亚洲综合激情另类小说区| 26uuu久久综合| 暴力调教一区二区三区| 免费不卡在线观看| 一区二区三区四区不卡在线 | 成人毛片老司机大片| 国产欧美一区二区在线| 欧美日韩一区二区在线视频| 九色综合狠狠综合久久| 亚洲日本在线a| 国产精品成人免费精品自在线观看| 久久夜色精品一区| 欧美成人性战久久| 日韩欧美国产综合一区| 99免费精品在线| 首页国产丝袜综合| 欧美一级片在线看| 一本色道a无线码一区v| 久久av老司机精品网站导航| 亚洲一区二三区| 琪琪一区二区三区| 激情偷乱视频一区二区三区| 日韩成人免费看| 日本不卡一区二区三区高清视频| 亚洲一区二区中文在线| 美女网站色91| www.性欧美| 在线观看亚洲一区| 日韩限制级电影在线观看| 26uuu亚洲| 国产精品不卡在线| 五月婷婷综合在线| 国产一区二区三区不卡在线观看| 色综合久久久久久久久久久| 欧美挠脚心视频网站| 精品国产免费一区二区三区四区 | 成人97人人超碰人人99| 欧美日韩一区中文字幕| 亚洲国产成人私人影院tom| 亚洲午夜久久久久久久久久久| 麻豆精品国产传媒mv男同| 一本一本大道香蕉久在线精品 | 精品奇米国产一区二区三区| 国产精品欧美久久久久无广告| 亚洲午夜免费福利视频| 国产高清久久久| 欧美一卡二卡在线观看| 亚洲成人免费电影| 国产乱码精品一区二区三区五月婷 | 亚洲愉拍自拍另类高清精品| 国产一区二区在线电影| 日韩免费高清av| 亚洲国产精品综合小说图片区| 国产精品夜夜嗨| 日韩一级精品视频在线观看| 亚洲国产中文字幕在线视频综合| 粉嫩一区二区三区性色av| 日韩精品在线一区| 天天色 色综合| 在线亚洲精品福利网址导航| 中文字幕一区三区| 成a人片国产精品| 日韩一区欧美小说| 国产高清亚洲一区| 久久久精品影视| 国产综合久久久久影院| 色乱码一区二区三区88| 久久在线观看免费| 国产精品一区二区你懂的| 26uuu亚洲婷婷狠狠天堂| 久草中文综合在线| xfplay精品久久| 成人免费av网站| 亚洲一区二区精品视频| 欧美日本在线一区| 麻豆91在线播放| 亚洲精品在线电影| 成人黄色网址在线观看| 亚洲一区二区三区四区中文字幕| 欧美性xxxxx极品少妇| 亚洲国产人成综合网站| 日韩一区二区免费在线电影| 激情五月播播久久久精品| 亚洲天堂中文字幕| 欧美性色黄大片| 国产精品538一区二区在线| 亚洲精品乱码久久久久久黑人| 日韩精品在线一区二区| 风间由美一区二区三区在线观看 | 亚洲精品国产无天堂网2021| 5858s免费视频成人| 国产麻豆欧美日韩一区|