1. 程式人生 > >Delphi中MD5實現方法(轉)

Delphi中MD5實現方法(轉)

file 單元 ava sender shm md5 文章 files admin

原來寫過一個計算MD5的程序,是用了一個叫MD5.pas的單元,使用起來還算簡單,但還有更簡單的辦法,安裝了indy就會有IdHashMessageDigest單元(delphi 7默認安裝indy)

有篇文章教怎麽用IdHashMessageDigest計算字符串md5,計算文件md5卻沒有說,在這裏補充一下,先看計算函數:

function TIdHashMessageDigest4.HashValue(AStream: TStream): T4x4LongWordRecord;參數類型是一個流就可以返回T4x4LongWordRecord類型的值,使用function TIdHash128.AsHex(const AValue: T4x4LongWordRecord): string;把T4x4LongWordRecord轉換為字符串就可以顯示出來,到這裏就簡單了,把一個文件以流的方式讀取,使用HashValue就計算出MD5了,流的使用很簡單,TFileStream.Create(const FileName: string; Mode: Word);參數FileName就是文件的路徑,Mode就是打開方式,使用fmOpenRead以讀方式打開,如果要計算大型文件最好使用線程來操作.以下是實例代碼:

在uses添加IdHashMessageDigest

procedure TForm1.Button1Click(Sender: TObject);

var

mymd5:TIdHashMessageDigest5;

begin

mymd5:=TIdHashMessageDigest5.Create;

ShowMessage(mymd5.AsHex(mymd5.HashValue(‘admin‘)));//計算字符串admin的MD5

ShowMessage(Copy(mymd5.AsHex(mymd5.HashValue(‘admin‘)),9,16));//獲取16位字符串MD5

ShowMessage(mymd5.AsHex(mymd5.HashValue(TFileStream.Create(‘e:\VRMPVOL_CNsp2.iso‘,fmOpenRead))));//計算文件MD5

mymd5.Free;

end;

Delphi中MD5實現方法(轉)