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看看有多强