首页
社区
课程
招聘
[旧帖] [求助]怎样计算文件的hash值 0.00雪花
发表于: 2010-3-12 19:00 9025

[旧帖] [求助]怎样计算文件的hash值 0.00雪花

2010-3-12 19:00
9025
收藏
免费 0
支持
分享
最新回复 (18)
雪    币: 424
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
不解释
http://www.google.com/search?hl=en&source=hp&q=%E6%96%87%E4%BB%B6+md5+crc+sha1&aq=f&aqi=&aql=&oq=
2010-3-12 23:34
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我要的不是工具
2010-3-12 23:47
0
雪    币: 424
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
你要的不是工具所以需要我再帮你换关键字搜?
2010-3-13 10:07
0
雪    币: 2513
活跃值: (575)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
如果不研究hash算法
确定你要计算文件hash值的一种或N种hash算法
利用网上的开源算法库调用代码计算
2010-3-13 10:22
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢,我是想找到一种比较好的,冲突比较小的针对文件校验的一种hash算法
windows xp不是自带了对文件的hash值计算吗,我是想知道它的hash函数和所取的key,
我想我算出来的hash值和它的一样
2010-3-13 13:34
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
7
搂着首先要明白什么是hash算法
hash算数也称单项散列算法  用于数字签名之类的应用
主流的算法有:MD5  SHA  RIPE-MD  HAVAL  N-Hash等
当然也有根据这些标准算法的一些变形也算是hash算法
所以hash值对某个特定的算法才有意义
2010-3-13 14:22
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
现在我是要对大量的文件的hash值进行记录,这样就需要一种复杂度比较低的hash算法,要求计算一次hash值的时间比较短,如果要选标准的hash算法,选哪个比较好呢
2010-3-13 15:23
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
如果要进行文件的特征匹配,选择文件的那种属性为key比较好呢,文件名有的太长我觉得不怎么适合,lss的大侠帮下忙啊
2010-3-13 15:27
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
10
MD5就挺不错的
速度也很好  需要工具或者算法源码我可以发给你一份
网上也很多   
搜一下一大堆

不过MD5现在已经没那么安全了   查找一个MD5碰撞也就几秒钟的事情
2010-3-13 15:28
0
雪    币: 424
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
一般不都是使用的文件的全文么
2010-3-13 15:29
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
12
文件的特征匹配
这个太广泛了吧?
什么特征呢?
用于查壳? 做免杀?还是别的什么
2010-3-13 15:32
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
用全文的话太慢了。windows自带的那个好像是用的全文,一个大点的文件要好几秒。我想把这个时间限制在ms级,不知有什么好的方法
2010-3-14 09:18
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
[QUOTE=blueapplez;774982]文件的特征匹配
这个太广泛了吧?
什么特征呢?
用于查壳? 做免杀?还是别的什么[/QUOTE]

就是唯一能标志一个文件的特征,本机上没有其他的文件能有相同的特征。就像文件名一样。在本机上是独一无二的,我现在就是考虑到效率问题,必须把一次hash值的计算限制在ms级,
有没有这样的算法,rst=func(filename),返回的rst是本机上唯一的,并且是定长的,如一个ulong,或一个ushort的大小,不能超过4个字节
2010-3-14 09:25
0
雪    币: 424
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
15
就算用全文都不能保证hash值唯一哦,更别说你还想压缩运算时间了
2010-3-15 10:23
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
16
有没有这样的算法,rst=func(filename),返回的rst是本机上唯一的,并且是定长的,如一个ulong,或一个ushort的大小,不能超过4个字节

这样的算法肯定不安全  因为你要求不超过4个字节  但是可以自己设计出来一个算法,但是安全性肯定没法保证

还有一个问题就是必须要把文件的全路径名包含进去,因为你说唯一标识本机文件
eg。 如果把文件a.txt 复制一份放其他地方并重命名为b.txt  那么他们的hash值是一样的  但是能唯一标识吗?
2010-3-15 12:13
0
雪    币: 219
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
”查找一个MD5碰撞也就几秒钟的事情“
        有这么快????
2010-3-15 12:34
0
雪    币: 211
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
你的要求无法实现吧。

btw, 不妨折中一下,
采用复合HASH运算,同时记录文件大小(自己定一个长度,大过这个长度就截断吧)。
比方说,对全文件执行CRC32,和文件的小部分执行MD5(或变型的MD5)。
最后的输出是:CRC32 & MD5 & (定长的)文件大小。

另: 四个字节实在太短了,很容易出现碰撞的,至少也要 弄个 long double  (12字节吧)
2010-3-16 11:51
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gyt
19
前来学习~帮忙顶贴~
2010-3-18 17:11
0
游客
登录 | 注册 方可回帖
返回
//