Free License,免費非開源,英文原版僅提供Setup文件,這裡下載。本人簡單漢化了軟體與其幫助,非Setup漢化版(就是所謂「中文綠色版」),在下面,版權完全歸屬於slavasoft Inc.:
漢化版 HashClac 2.02 下載
概述
HashCalc是一個易於使用的小工具,允許計算Message Digests,校驗和(Checksums)與文件的HMACs(Hash-based Message Authentication Code),以及文本和十六進位字元串。它提供了12+1個最流行的哈希(Hash)計算校驗和演算法的選擇。
主要功能
- 支持12種知名的Checksum演算法: MD2、MD4、MD5、SHA1、SHA256、SHA384、SHA512、RIPEMD160、PANAMA、TIGER、ADLER32、CRC32;
- 支持基於MD4的eD2k Hash演算法(用於eD2k網路,eDonkey、eMule等軟體);
- 支持2種模式的計算:HASH/CHECKSUM和HMAC;
- 支持3種數據輸入方法:文件、文本字串和十六進位字串;
- 可計算大文件。
使用
- 運行HashCalc。
- 在數據格式框中,選擇你想要的數據用於計算類型。HashCalc允許對文件、文本字串或十六進位字串進行計算。
- 在數據框中輸入要計算的數據:
- 如果要計算文件,請輸入文件路徑並回車。或者將文件直接拖動到HashCalc軟體窗口上來。
- 如果要計算文本字串,請輸入文本字串。
- 如果要計算十六進位字串,請輸入十六進位字串。
- 如果要計算數據的Message Digests/Checksuma,HMAC框必須沒有被選中。
-
如果要計算數據的HMAC(Hash-based Message Authentication Code)
- 選中HMAC框。
- 在密匙格式框中選擇您要使用的計算類型。HashCalc允許使用文本密鑰或十六進位密鑰進行計算。
- 在密匙框中鍵入要計算HMAC的密匙:
- 如果選擇了「文本字串」,鍵入文本密鑰。
- 如果選擇了「十六進位字串」,鍵入十六進位密鑰。
- 選擇您想使用的演算法,在對應的複選框前打上勾。
- 單擊計算按鈕,或者按回車鍵開始計算。
支持的Hash/Checksum演算法
Hash演算法 | Hash大小(單位:bit) |
MD2 | 128 |
MD4 | 128 |
MD5 | 128 |
SHA-1 | 160 |
SHA-2(256) | 256 |
SHA-2(384) | 384 |
SHA-2(512) | 512 |
RIPEMD-160 | 160 |
PANAMA | 256 |
TIGER | 192 |
Checksum演算法 | Checksum大小(單位:bit) |
ADLER32 | 32 |
CRC32 | 32 |
其他Hash演算法 | Hash大小(單位:bit) |
eDonkey/eMule
(基於MD4,用於eD2k網路上的eDonkey、eMule等軟體) |
128 |
19條評論隱藏
一直在用,更新+支持
換這個小工具試試 😳
一直在用,不過是官方原版(安裝版)
不過完全是綠色的,重裝系統後可以繼續用
其實也沒幾個英文 ➡
話說最下面的eDonkey/eMule 演算法,能不能作為下載是否完整的依據?
@wowapollo 可以。和eMule中的完全相同。但是實際上eMule在下載完畢的時候就會自動Hash驗證,所以一般下肯定不會下錯,下的肯定是那個eD2k鏈接指向的文件。就怕給的這個eD2k鏈接本身就是假貨。
這個軟體的eDonkey/eMule演算法有BUG的,當文件大小為9500K的倍數時hash值和emule官方原版的不同。
@writer15 確實是這樣。。
數據分割成多個9500KB的chunks,每個chunk計算MD4。如果文件長度正好是9500KB的整倍數,剩餘的大小為0的chunk依然要算。將這些chunk的MD4校驗和按順序聯合起來,並使用MD4計算Hash。
他大概就是沒有計算那個剩餘的大小為0的chunk。要是開源的話就可以修改一下了。。 ❗
不過話說你是怎麼發現的?湊巧碰到9500KB的整倍數的文件?1/972800=0.0001%的概率碰到這個bug啊,哈哈 😀
@囧
那是因為我一直在研究emule,查過一些資料。
關於0 chunk的問題,可以參考下面的資料。
http://wiki.anidb.info/w/Ed2k-hash#How_is_an_ed2k_hash_calculated_exactly
還有你也了解得很清楚嘛~~
@writer15 我是lz,因為我參考了這個,這個也是我由這個翻譯的。
你給的那篇裡面還是有點問題,不是if filesize is less than or equal to 9728000: return md4 of file,沒有equal to。根據eMule的結果,正好9728000 byte的時候,末尾的0 chunk的md4還是要append到hashlist裡面來。
@囧
哈,你沒認真看那文章。 你認真讀一次 How is an ed2k hash calculated exactly? 這一段吧。
說得很清楚,有兩個版本,演算法的偽代碼加了紅色代表一個版本,藍色代表另一個版本,黑色代表公用部分。
下面同時也有一個列表,藍色的代表用藍色的版本的演算法。。。。
最後弱弱的問一問,你對emule的協議有多少解?有沒到達比特級?
額不好意思,確實,我看到最後的return,我就return了,沒再看下去。。。
另外我完全不了解eD協議,囧,別老「弱弱的問」,那我弱的豈不是要跌到了。。。其實我基本不碰C++的。 😀
@_@
sn.im鏈接失效。望補上。我去下原版了。
@pchu 換原鏈接了:
https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/emule-mods-chinese-translation/HashCalc-2.02-chs.7z
Avdump use both methods.用它好了!
Avdump支持格式有限
Supported formats
* avi, mkv, ogm, mp4, asf/wmv, mpg, rm, mov
寫一個就行了!假如碰到文件長度正好是9500KB的整倍數的,輸出2種結果就是了!一種不算0的chunk,一種算0的chunk的!
@囧
呵呵,刻意弄出9728000整數倍大小的文件來搞測試時很容易的,winRAR的分卷壓縮大小填9728000或者9728000的整數倍大小,那就是100%了!比弄出MD5撞牆簡單:)
試試fpexpress看看有多強