2009-01-29

【Delphi】生成 MD5 字串

參考資料 ----
MD5 Hashing in Delphi


Delphi 7 的做法:


記得要 uses IdHashMessageDigest, idHash

Form 上各放一個 TEditTButton,函式 MD5 會將 Edit1 內的文字運算生成 MD5 字串


 
uses
  ......, IdHashMessageDigest, idHash;

implementation

{$R *.dfm}

function MD5(const fileName: string): string;
var
    idmd5: TIdHashMessageDigest5;
begin
    idmd5 := TIdHashMessageDigest5.Create;
    try
        result := idmd5.AsHex(idmd5.HashValue(filename)) ;
    finally
        idmd5.Free;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    Caption := MD5(Edit1.Text);
end;
 


Delphi XE6 的做法:


 
function MD5(const text: string): string;
var
    md5: TIdHashMessageDigest5;
begin
    try
        md5 := TIdHashMessageDigest5.Create;
        Result := md5.HashStringAsHex(text);    // 預設是產生大寫英文, 若要全小寫,則是 Lowercase(md5.HashStringAsHex(text))
    finally
        md5.Free;
    end;
end;
 


要注意 MD5不可逆的,所以無法單純以運算方式還原回之前的字串,也因此極適合用來儲存密碼存在資料庫內,即使有人入侵資料庫,也不能竊取密碼。

程式上的應用則為將使用者登入時所輸入的密碼做 MD5 運算,再比對是否與資料庫內的 MD5 字串相同,若相同即表輸入密碼正確。

沒有留言:

張貼留言