CRC-32 算不算一种哈希算法? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
lococo
V2EX    程序员

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

  •  
  •   locoo 2014-04-24 16:04:32 +08:00 11059 次点击
    这是一个创建于 4199 天前的主题,其中的信息可能已经有所发展或是发生改变。
    是不是任意大小的数据都可以通过CRC-32计算出一个32位的数据?

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

    所以 CRC-32 算哈希算法。

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

    我还以为真是我错了 ``
    nicai000
        4
    nicai000  
       2014-04-24 16:33:03 +08:00
    算, 你老师略弱. "弱版的MD5"这句话说得也略弱.
    Keyes
        5
    Keyes  
       2014-04-24 16:33:54 +08:00
    CRC32是一个妥妥的标准哈希算法,整个CRC系列都是为这目的而诞生的,你导师如此卖萌……
    Keyes
        6
    Keyes  
       2014-04-24 16:35:06 +08:00   1
    你可以去维基摘一些CRC的公式给他……
    lococo
        7
    lococo  
    OP
       2014-04-24 16:50:22 +08:00
    我刚刚把这个帖子的链接贴给导师了 ``
    导师说我如果在论文里写CRC-32是一种哈希算法的话这点就通不过检查的
    raptium
        8
    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
        9
    lococo  
    OP
       2014-04-24 16:51:20 +08:00
    好伤心
    那我还是把我论文里的所有这样写的语句改成
    恩`` 循环冗余校验算法!!
    raptium
        10
    raptium  
       2014-04-24 16:52:23 +08:00
    事实上简单的 Hash Function 可以是 f(x) = x mod n
    在写 hash map 的时候这样就够用了
    xdeng
        11
    xdeng  
       2014-04-24 16:57:04 +08:00
    碰撞率 比 MD5高吧?
    lococo
        12
    lococo  
    OP
       2014-04-24 17:00:04 +08:00
    @xdeng
    对呀 。。
    所以我一直觉得CRC32就好像弱版的MD5
    xdeng
        13
    xdeng  
       2014-04-24 17:30:29 +08:00
    @lococo CRC32 好像是追求的是速度
    Keyes
        14
    Keyes  
       2014-04-24 17:32:01 +08:00
    @xdeng 这也是TCP用它做校验的原因
    lococo
        15
    lococo  
    OP
       2014-04-24 17:34:24 +08:00
    @xdeng
    我的论文是研究大数据完整性验证的,需求就是想要提高验证的效率
    最开始我想用bloom filter + MD5 实现,最后比较了一番
    我才用的 hash set + crc-32 去实现
    min
        16
    min  
       2014-04-24 17:43:21 +08:00
    @lococo
    你把这link发给你导师了?
    还是不要费力搞什么论文了,研究一下换导师实在点儿 :)
    Keyes
        17
    Keyes  
       2014-04-24 17:43:26 +08:00
    其实用于少量数据的完整性校验,并不需要MD5等算法上场

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

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

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

    半吊子一个……不知道各位能看懂不……求做算法的大神出面详解
    min
        18
    min  
       2014-04-24 17:44:09 +08:00
    验证效率方面,好像有些hash算法是针对性能优化的,可以找来参考参考
    Keyes
        19
    Keyes  
       2014-04-24 17:46:39 +08:00
    @min 默默+1
    nicai000
        20
    nicai000  
       2014-04-24 17:46:47 +08:00
    你竟然把这帖子发给导师, 也真够直的...
    lococo
        21
    lococo  
    OP
       2014-04-24 17:50:21 +08:00
    导师现在已经懒得理我了
    twor2
    22
    twor2  
       2014-04-24 18:11:50 +08:00
    @lococo “导师现在已经懒得理我了 ”

    戳中笑点 233333
    zinking
        23
    zinking  
       2014-04-24 18:18:20 +08:00
    我觉得要看你讨论的上下文, 如果上下文里哈希算法指的是用在Map之类数据结构上的话, 我不觉得CRC是哈希算法。 CRC就是通常意义的校验算法而已。 没必要把什么东西都往抽象高层发散。 就像前面同学说的return 0还是哈希算法呢
    quake0day
        24
    quake0day  
       2014-04-24 22:50:20 +08:00   1
    如果检查的人有机会听你辩驳的话你就这么写。如果你没机会申辩的话,那最好还是改成他们容易懂的表述。
    lococo
        25
    lococo  
    OP
       2014-04-24 23:35:50 +08:00
    @quake0day
    嗯 。。我觉得导师还是为我好 。。
    今天有点激动了 。。
    undeadking
        26
    undeadking  
       2014-04-25 13:41:01 +08:00
    hash算法和可用于加密学的安全hash算法是两回事,一般信息安全的课本都会有详细的定义说明啊
    lococo
        27
    lococo  
    OP
       2014-04-25 15:05:05 +08:00 via iPhone
    @undeadking
    最开始导师给我问题背景假设的时候就在说用hash去确保原始数据完整性…
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5223 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 07:14 PVG 15:14 LAX 00:14 JFK 03:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86