線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3298
推到 Plurk!
推到 Facebook!

以檔案求出MD5.....

答題得分者是:pcboy
hipig
高階會員


發表:31
回覆:75
積分:111
註冊:2007-01-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-03-27 18:22:14 IP:140.126.xxx.xxx 未訂閱
如同前輩在這篇所寫的一樣
尋找資料過程讓人無奈且氣結
但依照前輩所寫之BCB 版及其範例卻又無法編譯

請教是否有人成功編譯這md5的範例
感謝
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-03-27 20:10:06 IP:220.131.xxx.xxx 訂閱
你應該可以找到 MD5 的演算法吧。
直接用演算法自己做呀。
為什麼一定要別人寫好範例?
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-03-27 21:10:03 IP:203.204.xxx.xxx 訂閱


<textarea class="delphi" rows="10" cols="60" name="code"> // [Delphi7] // GetFileMD5 讀取檔案內容 MD5 值 unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdHash, IdHashMessageDigest, Shellapi, Math; function GetFileMD5(sFilename:string): String; implementation function GetFileMD5(sFileName:String):String; // 要 uses IdHash, IdHashMessageDigest; Var Digest: T4x4LongWordRecord; S, S1: String; i: Integer; md5: TIdHashMessageDigest5; fs : TFileStream; FileHandle: Integer; begin SetLength(S, 16); if FileExists (sFileName) then begin md5:=TIdHashMessageDigest5.Create; try FileHandle := FileOpen(sFileName, fmOpenRead) ; if FileHandle>=0 then begin FileClose(FileHandle); // fs := TFileStream.Create(sFileName, fmOpenRead or fmShareDenyWrite) fs := TFileStream.Create(sFileName, fmOpenRead); //用 EFOpenError 接收例外 Digest :=md5.HashValue(fs); Move(Digest, S[1], 16); for i := 1 to Length(S) do begin S1 := S1 Format('x', [Byte(S[i])]); end; while Pos(' ', S1) > 0 do S1[Pos(' ', S1)] := '0'; Result:=S1; end else Result:='N/A'; finally if FileHandle>=0 then begin md5.Free; fs.Free; end; end; end; end; </textarea>
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
hipig
高階會員


發表:31
回覆:75
積分:111
註冊:2007-01-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-03-28 12:38:55 IP:140.126.xxx.xxx 未訂閱
感謝前輩指教,我寫這程式主要用於整合滑鼠右鍵檢查某些小檔案.
因為需要就自己動手寫一個給自己用,而演算法部份不是不了解
(如同我懂OSI 網路七層協定卻不一定要自己做出網路元件來用)
但畢竟不是本行且只是我想利用現有的程式碼加以修該出給自己用的工具,而不是閉門造車
(不過還是參考FSF的MD5 library改出了一個BCB給用的)
在此也一併感謝pcboy前輩的指導



===================引 用 文 章===================
你應該可以找到 MD5 的演算法吧。
直接用演算法自己做呀。
為什麼一定要別人寫好範例?
bugmans
高階會員


發表:95
回覆:322
積分:188
註冊:2003-04-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-03-28 16:37:55 IP:125.225.xxx.xxx 未訂閱
hipig在發問前有先找過文章,至少是值得嘉許的
我發現有個地方要注意的
(1)MyHashMD5.cpp少了#include <vcl.h>
原本的角括號因為html的關係消失了,看網頁的原始碼就可以看到完整的include敘述
(2)將MyHashMD5.h和MyHashMD5.cpp加入專案
(3)在Unit1.h加入#include "MyHashMD5.h"

測試程式
TFileStream *stream=new TFileStream(ExtractFilePath(Application->ExeName) "test.txt",fmOpenRead);
String md5=HashValue(stream);
delete stream;
test.txt放在執行檔相同的目錄下

假如還試不出來,我再將整個檔案上傳
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-03-28 16:43:47 IP:59.124.xxx.xxx 未訂閱
插花一下,PO程式碼的方式可以參考下面連結
http://delphi.ktop.com.tw/board.php?cid=32&fid=107&tid=86625
系統時間:2024-04-25 4:52:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!