CRC-32 算不算一种哈希算法?

2014-04-24 16:04:32 +08:00
 lococo
是不是任意大小的数据都可以通过CRC-32计算出一个32位的数据?

如果是这样的话那不就是弱版的MD5
为什么刚刚听老师说CRC-32不算一种哈希算法?
10424 次点击
所在节点    程序员
27 条回复
timonwong
2014-04-24 16:24:12 +08:00
timothyqiu
2014-04-24 16:26:14 +08:00
哈希是把 任意长度数据 往 固定长度数据 上的一种映射。

所以 CRC-32 算哈希算法。

不过,理论上 return 0 也是一种哈希算法,只不过永远碰撞而已。
lococo
2014-04-24 16:30:21 +08:00
刚刚论文导师说我的论文太水,没看懂我的算法,把我骂一顿
第一句话就是说:
P14 crc-32 不是哈希函数!!

我还以为真是我错了 ``
nicai000
2014-04-24 16:33:03 +08:00
算, 你老师略弱. "弱版的MD5"这句话说得也略弱.
Keyes
2014-04-24 16:33:54 +08:00
CRC32是一个妥妥的标准哈希算法,整个CRC系列都是为这目的而诞生的,你导师如此卖萌……
Keyes
2014-04-24 16:35:06 +08:00
你可以去维基摘一些CRC的公式给他……
lococo
2014-04-24 16:50:22 +08:00
我刚刚把这个帖子的链接贴给导师了 ``
导师说我如果在论文里写CRC-32是一种哈希算法的话这点就通不过检查的
raptium
2014-04-24 16:51:14 +08:00
http://en.wikipedia.org/wiki/Cryptographic_hash_function
http://en.wikipedia.org/wiki/Hash_function

你导师把这两个搞混了
CRC32 是 Hash Function,不过对碰撞就没啥抵抗了
lococo
2014-04-24 16:51:20 +08:00
好伤心
那我还是把我论文里的所有这样写的语句改成
恩`` 循环冗余校验算法!!
raptium
2014-04-24 16:52:23 +08:00
事实上简单的 Hash Function 可以是 f(x) = x mod n
在写 hash map 的时候这样就够用了
xdeng
2014-04-24 16:57:04 +08:00
碰撞率 比 MD5高吧?
lococo
2014-04-24 17:00:04 +08:00
@xdeng
对呀 。。
所以我一直觉得CRC32就好像弱版的MD5
xdeng
2014-04-24 17:30:29 +08:00
@lococo CRC32 好像是追求的是速度
Keyes
2014-04-24 17:32:01 +08:00
@xdeng 这也是TCP用它做校验的原因
lococo
2014-04-24 17:34:24 +08:00
@xdeng
我的论文是研究大数据完整性验证的,需求就是想要提高验证的效率
最开始我想用bloom filter + MD5 实现,最后比较了一番
我才用的 hash set + crc-32 去实现
min
2014-04-24 17:43:21 +08:00
@lococo
你把这link发给你导师了?
还是不要费力搞什么论文了,研究一下换导师实在点儿 :)
Keyes
2014-04-24 17:43:26 +08:00
其实用于少量数据的完整性校验,并不需要MD5等算法上场

另外“碰撞”也只是f(data1) == f(data2)而已;

但如果是我有数据篡改的目的,那我的目的一定是:
要根据a1的数据进行篡改得到a2,且hash(a1)==hash(a2),且a2要具有实际意义,要保持原有数据结构的长度限制;

反正我是做不到……要得出长度一样、哈希结果一样,但内容不一样的两组数据,我相信即使CRC32也没有那么容易就做出来的

半吊子一个……不知道各位能看懂不……求做算法的大神出面详解
min
2014-04-24 17:44:09 +08:00
验证效率方面,好像有些hash算法是针对性能优化的,可以找来参考参考
Keyes
2014-04-24 17:46:39 +08:00
@min 默默+1
nicai000
2014-04-24 17:46:47 +08:00
你竟然把这帖子发给导师, 也真够直的...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/109855

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX