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

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

?? md5hash.dpr

?? delphi寫的http的download來Update的源碼
?? DPR
字號:
library md5hash;

{ Important note about DLL memory management: ShareMem must be the
  first unit in your library's USES clause AND your project's (select
  Project-View Source) USES clause if your DLL exports any procedures or
  functions that pass strings as parameters or function results. This
  applies to all strings passed to and from your DLL--even those that
  are nested in records and classes. ShareMem is the interface unit to
  the BORLNDMM.DLL shared memory manager, which must be deployed along
  with your DLL. To avoid using BORLNDMM.DLL, pass string information
  using PChar or ShortString parameters. }

uses
    SysUtils
  , Classes
  , Windows
  ;

{$R *.res}

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;

var
 PADDING: MD5Buffer = (
   $80, $00, $00, $00, $00, $00, $00, $00,
   $00, $00, $00, $00, $00, $00, $00, $00,
   $00, $00, $00, $00, $00, $00, $00, $00,
   $00, $00, $00, $00, $00, $00, $00, $00,
   $00, $00, $00, $00, $00, $00, $00, $00,
   $00, $00, $00, $00, $00, $00, $00, $00,
   $00, $00, $00, $00, $00, $00, $00, $00,
   $00, $00, $00, $00, $00, $00, $00, $00
 );

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

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

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

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

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

procedure 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 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 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 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;

// ----------

// Encode Count bytes at Source into (Count / 4) DWORDs at Target
procedure 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;

// Decode Count DWORDs at Source into (Count * 4) Bytes at Target
procedure 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;

// Transform State according to first 64 bytes at Buffer
procedure 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;

// ----------

// Initialize given Context
procedure 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;

// Update given Context to include Length bytes of Input
procedure 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;

// Finalize given Context, create Digest and zeroize Context
procedure 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;

// ----------

// Create digest of given Message
function MD5String(M: string): MD5Digest; stdcall;
var
 Context: MD5Context;
begin
 MD5Init(Context);
 MD5Update(Context, pChar(M), length(M));
 MD5Final(Context, Result);
end;

// Create digest of file with given Name
function MD5File(N: string): MD5Digest; stdcall;
var
 FileHandle: THandle;
 MapHandle: THandle;
 ViewPointer: pointer;
 Context: MD5Context;
begin
 MD5Init(Context);
 FileHandle := CreateFile(pChar(N), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE,
   nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_SEQUENTIAL_SCAN, 0);
 if FileHandle <> INVALID_HANDLE_VALUE then try
   MapHandle := CreateFileMapping(FileHandle, nil, PAGE_READONLY, 0, 0, nil);
   if MapHandle <> 0 then try
     ViewPointer := MapViewOfFile(MapHandle, FILE_MAP_READ, 0, 0, 0);
     if ViewPointer <> nil then try
       MD5Update(Context, ViewPointer, GetFileSize(FileHandle, nil));
     finally
       UnmapViewOfFile(ViewPointer);
     end;
   finally
     CloseHandle(MapHandle);
   end;
 finally
   CloseHandle(FileHandle);
 end;
 MD5Final(Context, Result);
end;

// Create hex representation of given Digest
function MD5Print(D: MD5Digest): string; stdcall;
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
  begin
   Result := Result + Digits[(D[I] shr 4) and $0f] + Digits[D[I] and $0f];
  end;
end;

// ----------

// Compare two Digests
function MD5Match(D1, D2: MD5Digest): boolean;stdcall;
var
 I: byte;
begin
 I := 0;
 Result := TRUE;
 while Result and (I < 16) do begin
   Result := D1[I] = D2[I];
   inc(I);
 end;
end;


exports
    MD5Match
  , MD5String
  , MD5File
  , MD5Print
  ;

begin
end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本不卡视频在线观看| 国产精品99久久久久久久女警| 欧美成人一区二区三区| 91丝袜美女网| 久久精品国产网站| 一区二区三区成人在线视频| 久久久精品欧美丰满| 欧美日韩美少妇| 99久久精品一区| 国产成人自拍高清视频在线免费播放| 亚洲大片精品永久免费| 国产精品蜜臀av| 精品久久久久久综合日本欧美| 在线免费av一区| 99精品国产99久久久久久白柏| 免费成人av在线播放| 亚洲一级二级在线| 中文字幕制服丝袜成人av| 久久婷婷色综合| 日韩欧美一级二级| 欧美日韩一区二区不卡| 一本色道a无线码一区v| 成人性视频网站| 国产精品66部| 国产一区在线不卡| 开心九九激情九九欧美日韩精美视频电影| 曰韩精品一区二区| 综合色天天鬼久久鬼色| 国产精品九色蝌蚪自拍| 亚洲国产激情av| 国产午夜精品一区二区| 久久久久亚洲蜜桃| 久久亚洲影视婷婷| 久久男人中文字幕资源站| 精品乱人伦小说| 日韩午夜激情av| 日韩三级精品电影久久久 | 欧美色图在线观看| 91美女视频网站| 91在线观看污| av午夜精品一区二区三区| 成人免费视频免费观看| av一区二区久久| 91麻豆视频网站| 色综合咪咪久久| 欧美中文字幕久久 | 国产精品视频九色porn| 国产精品久久久久aaaa| 成人免费在线观看入口| 亚洲另类色综合网站| 亚洲永久精品大片| 午夜视频一区在线观看| 日本少妇一区二区| 国产一区二区福利| 粉嫩久久99精品久久久久久夜| 国产91丝袜在线18| 91视频免费观看| 欧美三级三级三级爽爽爽| 91精品国产综合久久香蕉麻豆| 欧美成人高清电影在线| 国产欧美一区视频| 亚洲视频网在线直播| 亚洲国产中文字幕| 免费精品视频在线| 国产成人精品影视| 色综合久久综合网97色综合| 欧美久久久久中文字幕| 精品国产乱码久久| 亚洲天堂中文字幕| 日精品一区二区三区| 国产一区二区三区免费看| 99国产精品视频免费观看| 欧美日韩一区二区三区四区五区 | 视频在线观看一区| 国产一区二区不卡在线| 色噜噜狠狠成人网p站| 欧美一区二区三区视频免费 | 在线观看欧美精品| 欧美成人一区二区三区| 国产精品日产欧美久久久久| 亚洲v日本v欧美v久久精品| 人禽交欧美网站| 不卡一区二区中文字幕| 欧美日韩国产一区| 亚洲国产精品精华液ab| 香蕉成人啪国产精品视频综合网| 精品一区二区久久久| 一本到三区不卡视频| 欧美电视剧免费观看| 亚洲久草在线视频| 国产麻豆日韩欧美久久| 欧美日韩大陆在线| 中文子幕无线码一区tr| 蜜臀91精品一区二区三区| 91在线小视频| www国产精品av| 一区二区三区四区视频精品免费 | 国产午夜精品一区二区三区嫩草| 亚洲国产视频直播| 本田岬高潮一区二区三区| 欧美一区二区美女| 一区二区三区中文在线| 国产寡妇亲子伦一区二区| 欧美另类videos死尸| 日韩毛片高清在线播放| 国产精品一级在线| 91精品久久久久久蜜臀| 一区二区三区四区在线免费观看| 国产**成人网毛片九色 | 成人午夜av在线| 91精品国产乱| 一区二区国产盗摄色噜噜| 成人99免费视频| 国产午夜亚洲精品不卡| 精品午夜久久福利影院 | 久久久久久久久久久99999| 亚洲大尺度视频在线观看| 99久久免费视频.com| 久久久久久亚洲综合影院红桃| 日韩专区欧美专区| 欧美三级视频在线| 一区二区三区四区蜜桃| 91麻豆自制传媒国产之光| 欧美国产视频在线| 国产精品69久久久久水密桃| 精品99久久久久久| 极品美女销魂一区二区三区免费| 在线电影一区二区三区| 婷婷成人激情在线网| 91久久线看在观草草青青| 亚洲人成7777| 91片在线免费观看| 综合久久综合久久| 一本在线高清不卡dvd| 日韩理论电影院| 日本韩国欧美在线| 亚洲精品视频在线观看网站| 99精品视频在线播放观看| 亚洲欧美日韩在线播放| 色网综合在线观看| 一区二区三区在线免费视频| 色综合久久99| 亚洲一区在线视频| 欧美日韩在线播放三区四区| 亚洲国产精品影院| 欧美狂野另类xxxxoooo| 日本一区中文字幕| 欧美电影精品一区二区| 国产精品亚洲一区二区三区妖精| 久久综合色天天久久综合图片| 国产真实精品久久二三区| 国产视频一区二区三区在线观看| 国产宾馆实践打屁股91| 中文字幕视频一区| 91国产免费观看| 免费久久99精品国产| 久久久91精品国产一区二区三区| 成人网页在线观看| 亚洲色图欧美偷拍| 欧美精选一区二区| 激情深爱一区二区| 中文字幕日韩一区| 欧美理论在线播放| 国产成人精品影视| 亚洲国产婷婷综合在线精品| 日韩欧美国产小视频| 国产91精品入口| 亚洲综合在线五月| 日韩欧美一区二区视频| 国产·精品毛片| 亚洲午夜电影网| 精品国产乱码久久久久久久 | 亚洲一区二区三区精品在线| 在线不卡一区二区| 国产精品1区二区.| 亚洲综合免费观看高清在线观看| 日韩一区二区免费高清| 国产不卡在线一区| 亚洲电影在线播放| 久久天天做天天爱综合色| 91论坛在线播放| 欧美国产精品一区二区三区| 久久精品视频免费观看| jizz一区二区| 日一区二区三区| 国产婷婷色一区二区三区在线| 91片黄在线观看| 国产一区二区在线看| 亚洲欧美日韩电影| 26uuu成人网一区二区三区| 91久久精品日日躁夜夜躁欧美| 久久99国产精品尤物| 亚洲午夜在线电影| 中文字幕av不卡| 精品国产1区2区3区| 欧美亚洲日本国产| 国产成a人无v码亚洲福利| 蜜臀99久久精品久久久久久软件| 亚洲男同性视频| 久久久久久久久久久99999|