庆 61,找抽脑洞,我又发明了文件校验码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
ps1aniuge
V2EX    奇思妙想

庆 61,找抽脑洞,我又发明了文件校验码

  •  
  •   ps1aniuge 2019-05-28 15:12:49 +08:00 5434 次点击
    这是一个创建于 2379 天前的主题,其中的信息可能已经有所发展或是发生改变。
    文件校验码 md5,sha1 大家知道么?我又重新发明了类似校验码。


    校验码名字=买没想好。
    校验码目的=为了发明,文件的唯一哈希值。
    校验码字节数=8


    校验码构成:
    11-22-33-44
    md5 的前两位 11+md5 的后两位 22+sha1 的前两位 33+sha1 的后两位 44



    校验码原理:
    你能碰撞(作弊,欺骗) md5,
    你能碰撞(作弊,欺骗) sha1,
    但你不能同时欺骗 md5+sha1。我这个是取两种简单算法,交叉验证码。



    校验码优点:
    这种交叉,应该比 sha512 算法更可靠。更简单。



    校验码缺点:
    计算需要读 2 遍字符串。



    最终疑问:
    8 个字节=ulOng=20 位 10 进制数。
    0 ---》 18446 74407 37095 51615
    能区分这么多种类,够用么?

    111+222+333+444=12 字节总够用了吧?

    算是找抽么?;)
    第 1 条附言    2019-05-29 20:02:08 +08:00
    这个猜想被我命名为 [老童找抽猜想] 。
    这个猜想目的,是想证明:
    12 字节,绝不会被碰撞到。
    8 字节,期待它不会被碰撞到。

    碰撞,懂吗? 也就是说你要算出 2 个文件大小相同,内容不同,但哈希值相同。
    23 条回复    2019-06-01 16:47:41 +08:00
    makdon
        1
    makdon  
       2019-05-28 15:45:45 +08:00   3
    但是你怎么样证明你这个校验码足够唯一?假如有两个文件:
    A 的 md5:1123----6677
    B 的 md5:1134----5577
    A 的 SHA1:aabb----yyzz
    B 的 SHA1:aacc----xxzz

    那得到的结果都是 1177aazz
    这只是个例子,的确 md5 和 sha 都有可能发生两个不同内容出来的值相同,但是你怎么证明你的这个想法中,产生冲突的可能性足够小可以用于实际应用。
    t123yh
        2
    t123yh  
       2019-05-28 15:51:04 +08:00 via Android
    MD5 和 SHA1 在发明的时候,因为用的人比较少,都是没有碰撞方法的。后来用的人多了,才有人研究它们的碰撞方法。

    你的算法,因为没人用,所以没人研究碰撞方法;但并不代表它是安全的。
    boris1993
        3
    boris1993  
       2019-05-28 15:53:29 +08:00 via Android
    emmmm.......这个好像得靠数学证明的吧.......
    xenme
        4
    xenme  
       2019-05-28 15:54:15 +08:00
    现在已经有方法对完整的 md5 和 sha1 进行碰撞攻击,只是代价太高,你这只取前后两位立马把难度降低了不知道多少数量级
    Mohanson
        5
    Mohanson  
       2019-05-28 16:01:23 +08:00 via Android
    现在部分正规下载站,会同时给出 md5 与 sha256. 搞笑的地方在于 256 的 8 次方…嗯嗯嗯,我用笔记本都能给你碰出来。 敲黑板:md5 是 16 个 byte, sha256 是 32 个 byte。md5 用正确算法碰撞在我电脑上不需要一分钟,你的这个算法,暴力遍历就可以了…
    Ultraman
        6
    Ultraman  
       2019-05-28 16:04:58 +08:00 via Android
    为啥不直接把俩拼接起来…
    mcone
        7
    mcone  
       2019-05-28 16:07:10 +08:00
    对,是找抽,虽然我读书不多,对哈希碰撞可以说是门都没双脚进入;但是我建议楼主多读读书,你真的是想的太多了……

    才 8 字节就想“发明”,小学的抽屉原理还记得吗,理论上讲这几乎是送分题……
    azh7138m
        8
    azh7138m  
       2019-05-28 17:26:43 +08:00
    儿童劫
    mooncakejs
        9
    mooncakejs  
       2019-05-28 17:47:39 +08:00
    #1 给出的你都解决不了,md5 的前 2 位 != md5
    xiri
        10
    xiri  
       2019-05-28 18:07:11 +08:00
    正文内容很符合楼主的标题,“庆 61 ”(:手动狗头
    AlisaDestiny
        11
    AlisaDestiny  
       2019-05-28 18:30:28 +08:00
    你这字节数算的不对吧。
    一个 hexadecimal digit 是 4bit.
    11-22-33-44 是 32bit 等于 4 字节。
    而且你这个相当于对数字 1 到( 2^32+1 )求哈希值就有必定会有碰撞,还不如 MD5。
    run2
        12
    run2  
       2019-05-28 18:33:21 +08:00
    你这相当于把两个自行车拼一起,看~我发明了汽车
    liuzhiyong
        13
    liuzhiyong  
       2019-05-28 21:19:29 +08:00
    哥们,你这样搞肯定不行。“ 8 个字节”太离谱。
    eslizn
        14
    eslizn  
       2019-05-28 21:25:10 +08:00
    摘要算法的核心是什么?
    si
        15
    si  
       2019-05-28 21:32:55 +08:00   1
    数据是无限的,hash 是有限的。
    用有限的 hash 映射无限的数据,必定会有重复的。
    hash 越短、碰撞几率越多。
    Windelight
        16
    Windelight  
       2019-05-28 21:50:31 +08:00 via Android
    你这一共 8 个,或者 12 个,也就是 36 的多少次方,最多也就是大约
    4738000000000000000
    个情况,然后这个实际上碰撞可能性更大
    不过 61 快乐,毕竟 20 个小朋友加一个老师出去玩座 20 座车就可以了,司机和老师可以站着呀。
    ps1aniuge
        17
    ps1aniuge  
    OP
       2019-05-29 19:46:00 +08:00
    11 楼你好:“ 1 ”代表 1 个字节,也就是“ ff ”,这样就是 8 个字节了。

    5 楼你好:
    真的这么简单么?
    给你一个文件,
    大小我说了算,就 10mb 吧。

    内容你说了算。
    你随意改变这 10mb 内容,要求同时达到
    md5=1111xxxx2222
    sha1=3333xxxxx4444

    按照我的方法 md5+sha1=1111+2222+3333+4444 总共 8 个字节,
    给你 3 天,你能碰撞出来么?累死你!

    碰撞,你懂吗? 也就是说你要算出 2 个文件内容不同,
    但哈希值都是:1111-2222-3333-4444.这 8 个字节。

    10mb 文件,哈希值是特定的( 16 进制,8 个字节) 1111222233334444,谁能算出来?
    azh7138m
        18
    azh7138m  
       2019-05-29 21:39:59 +08:00
    16 位 16 进制,也就是 [0, 18446744073709551615],换句话说,我只要枚举 [0, 18446744073709551616],就必定会重复。

    说白了,就是一个 64 位数,但是现在普遍认为 SHA-256 不够安全,2 ** 256 是 2 ** 64 的 6277101735386680763835789423207666416102355444464034512896 倍,是 2 ** 96 的 1461501637330902918203684832716283019655932542976 倍。
    Jarek
        19
    Jarek  
       2019-05-30 07:05:33 +08:00 via iPhone
    民科终于把手伸向计算机了
    msaionyc
        20
    msaionyc  
       2019-05-30 09:59:52 +08:00
    民科?
    1daydayde
        21
    1daydayde  
       2019-05-30 22:29:17 +08:00 via Android
    真.儿童节快乐
    pdfgo
        22
    pdfgo  
       2019-05-30 23:57:40 +08:00 via Android
    愚昧无知为耻
    rmb1222
        23
    rmb1222  
       2019-06-01 16:47:41 +08:00 via iPhone
    生日攻击了解一下
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4232 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 04:08 PVG 12:08 LAX 20:08 JFK 23:08
    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