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

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

?? unit1.pas

?? MD5算法完整源碼與調用方法
?? PAS
字號:
///////////////////////////////////////////////////////////////////////////////
                         //MD5 DEMO V1.0//
                          //作者:ksaiy//
//歡迎使用由ksaiy制作的MD5加密算法演示程序,此算法為標準的MD5算法,你可以根據的
//的自己需要進行變形。具體怎么操作可以登錄我們的網站查詢詳細的資料。我們專門為軟
//件開發者提供軟件加密安全測試服務和軟件加密解決方案,具體的可以參看我們的網站上
//的資料。我們的網站:http://www.ksaiy.com  http://www.magicoa.com
//技術支持:ksaiy@sina.com 在線QQ:40188696 UC:934155
                            //End //

                  //注意:轉載請保留以上信息。//
///////////////////////////////////////////////////////////////////////////////

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

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;

procedure MD5Init(var Context: MD5Context);
procedure MD5Update(var Context: MD5Context; Input: pChar; Length: longword);
procedure MD5Final(var Context: MD5Context; var Digest: MD5Digest);

function MD5String(M: string): MD5Digest;
function MD5File(N: string): MD5Digest;
function MD5Print(D: MD5Digest): string;
function MD5Match(D1, D2: MD5Digest): Boolean;

function RivestStr(Str: string): string;
function RivestFile(FileName: string): string;


var
  Form1: TForm1;
  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);


implementation

{$R *.dfm}

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;

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;

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;

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;

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;

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;

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;

function MD5String(M: string): MD5Digest;
var
	Context: MD5Context;
begin
	MD5Init(Context);
	MD5Update(Context, pChar(M), length(M));
	MD5Final(Context, Result);
end;

function MD5File(N: string): MD5Digest;
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;

function 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 MD5Match(D1, D2: MD5Digest): boolean;
var
	I: byte;
begin
	I := 0;
	Result := TRUE;
	while Result and (I < 16) do begin
		Result := D1[I] = D2[I];
		inc(I);
	end;
end;

function RivestStr(Str: string): string;
begin
  Result := MD5Print(MD5String(Str));
end;

function RivestFile(FileName: string): string;
begin
  Result := MD5Print(MD5File(FileName));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
//function RivestStr(Str: string): string;為字符串加密函數;
  if RivestStr(Edit1.Text)=Edit2.Text then
    ShowMessage('注冊成功!')
  else
    ShowMessage('注冊失敗!');
///////////////////////////////////////////////////////////////////////////////
                         //MD5 DEMO V1.0//
                          //作者:ksaiy//
//歡迎使用由ksaiy制作的MD5加密算法演示程序,此算法為標準的MD5算法,你可以根據的
//的自己需要進行變形。具體怎么操作可以登錄我們的網站查詢詳細的資料。我們專門為軟
//件開發者提供軟件加密安全測試服務和軟件加密解決方案,具體的可以參看我們的網站上
//的資料。我們的網站:http://www.ksaiy.com  http://www.magicoa.com
//技術支持:ksaiy@sina.com 在線QQ:40188696 UC:934155
                            //End //

                  //注意:轉載請保留以上信息。//                            
///////////////////////////////////////////////////////////////////////////////
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;

end.
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品免费在线| 免费欧美日韩国产三级电影| 欧美美女一区二区| 国产精品自拍av| 亚州成人在线电影| 国产精品久久免费看| 日韩欧美在线网站| 91高清在线观看| 国产aⅴ综合色| 日本午夜精品视频在线观看 | 欧美成人激情免费网| 成人av动漫网站| 精彩视频一区二区三区| 亚洲一级片在线观看| 中文一区一区三区高中清不卡| 欧美日韩国产精选| 91美女片黄在线观看| 国产一区二区三区电影在线观看| 亚洲成a天堂v人片| 日韩理论电影院| 国产精品亲子伦对白| 欧美电视剧在线观看完整版| 欧美日韩中字一区| 91视频在线看| 北条麻妃一区二区三区| 国产精品一二三在| 精品一区二区免费| 免费在线一区观看| 日韩精品一二区| 天天av天天翘天天综合网| 亚洲欧美国产毛片在线| 国产精品无圣光一区二区| 亚洲精品在线免费播放| 欧美一区二区性放荡片| 欧美日韩一区小说| 欧美性淫爽ww久久久久无| 91丝袜高跟美女视频| 成人h精品动漫一区二区三区| 国产精品一区二区久久不卡| 国产永久精品大片wwwapp| 麻豆国产精品视频| 麻豆中文一区二区| 美女在线观看视频一区二区| 美国十次综合导航| 精品一区二区综合| 国产一区二区精品久久99| 久久国产剧场电影| 激情六月婷婷综合| 国产黄色精品网站| 国产99久久久久久免费看农村| 精品一区二区三区在线观看| 国内外成人在线| 国产精品99久久久久久似苏梦涵 | 精品国产乱码久久久久久影片| 91精品国产高清一区二区三区蜜臀| 欧洲一区二区三区免费视频| 欧美视频一区二区在线观看| 欧美日韩一卡二卡三卡| 91精品国产综合久久精品app| 欧美电影一区二区三区| 欧美电影免费观看完整版 | 中文字幕字幕中文在线中不卡视频| 国产日本一区二区| 亚洲视频免费看| 成人18视频日本| 91福利精品视频| 91精品国产综合久久精品| 精品理论电影在线观看 | 国产欧美中文在线| 亚洲欧洲成人精品av97| 一区二区三区精密机械公司| 首页综合国产亚洲丝袜| 国产一区二区三区免费播放| 99久久综合国产精品| 欧美性做爰猛烈叫床潮| 日韩视频免费直播| 国产精品网站在线| 一区二区三区在线视频观看58| 日本成人中文字幕在线视频| 国产乱子伦视频一区二区三区| 91免费版pro下载短视频| 欧美视频你懂的| 国产网红主播福利一区二区| 最新国产精品久久精品| 日本欧美一区二区在线观看| 国产精品一区二区在线观看不卡| 色综合久久中文综合久久97| 日韩美女一区二区三区| 日韩一区欧美一区| 麻豆极品一区二区三区| 丁香五精品蜜臀久久久久99网站| 在线观看日韩毛片| 久久九九国产精品| 午夜精品福利一区二区三区蜜桃| 国产麻豆精品95视频| 欧美午夜精品电影| 国产午夜一区二区三区| 亚洲大片精品永久免费| 风流少妇一区二区| 91麻豆精品国产91久久久久久| 中文一区二区在线观看| 免费观看91视频大全| 91丨国产丨九色丨pron| 久久久久久免费网| 日韩精品亚洲一区| 99久久99久久精品免费看蜜桃| 日韩三级在线观看| 一区二区三区不卡在线观看 | 国产一区二区在线电影| 欧美日韩黄视频| 日韩美女视频一区二区 | 欧美欧美欧美欧美| 亚洲欧洲在线观看av| 加勒比av一区二区| 欧美丰满高潮xxxx喷水动漫| 最新国产精品久久精品| 国产高清久久久久| 欧美第一区第二区| 婷婷久久综合九色综合绿巨人| 91视视频在线观看入口直接观看www| 精品88久久久久88久久久| 日韩国产欧美在线视频| 欧美专区日韩专区| 亚洲精品视频自拍| 本田岬高潮一区二区三区| 久久精品一区二区三区四区| 蜜桃一区二区三区在线观看| 欧美日韩电影在线播放| 一区二区在线观看不卡| 91视频在线观看| 国产精品免费aⅴ片在线观看| 国产一区二区在线电影| 精品国产一区二区三区av性色| 亚洲一级二级在线| 日本大香伊一区二区三区| 中文字幕中文乱码欧美一区二区 | 日韩主播视频在线| 欧美色综合久久| 亚洲一区在线电影| 欧美在线视频你懂得| 亚洲综合清纯丝袜自拍| 在线看一区二区| 亚洲成人一区在线| 91精品国产色综合久久不卡电影| 视频在线观看一区二区三区| 欧美精品国产精品| 日本大胆欧美人术艺术动态| 欧美电影免费观看高清完整版在| 另类中文字幕网| 欧美精品一区二区三区高清aⅴ| 九九**精品视频免费播放| 精品国产一区二区三区四区四| 国产自产视频一区二区三区| 久久久噜噜噜久噜久久综合| 国产成人亚洲综合色影视| 国产精品毛片高清在线完整版| av在线免费不卡| 夜夜嗨av一区二区三区四季av| 欧美少妇一区二区| 美女一区二区三区| 国产片一区二区| 色综合中文字幕| 午夜精品久久久久久久99水蜜桃| 欧美一区二区三区免费| 国产精品一卡二卡| 国产精品久久久久久妇女6080| 色婷婷狠狠综合| 奇米一区二区三区| 中文字幕国产精品一区二区| 色综合天天性综合| 日日夜夜免费精品| 国产区在线观看成人精品| 99re6这里只有精品视频在线观看| 一区二区三区在线视频观看| 欧美系列亚洲系列| 精久久久久久久久久久| 中文字幕佐山爱一区二区免费| 欧美日韩极品在线观看一区| 国产在线视频一区二区| 亚洲精品亚洲人成人网| 日韩一级完整毛片| www..com久久爱| 日韩**一区毛片| 国产精品热久久久久夜色精品三区| 日本大香伊一区二区三区| 精品一二三四区| 亚洲免费av在线| 2017欧美狠狠色| 日本国产一区二区| 国内国产精品久久| 一区二区三区蜜桃网| 久久久久久免费毛片精品| 欧美专区日韩专区| 国产v综合v亚洲欧| 日韩av中文字幕一区二区| 国产精品久久久一本精品 | 日韩欧美国产三级| 色综合久久久久| 国产精品一区二区无线| 日韩电影在线一区|