首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

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

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

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

  •  
  •   ps1aniuge · 241 天前 · 2916 次点击
    这是一个创建于 241 天前的主题,其中的信息可能已经有所发展或是发生改变。
    文件校验码 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 条附言  ·  240 天前
    这个猜想被我命名为 [老童找抽猜想] 。
    这个猜想目的,是想证明:
    12 字节,绝不会被碰撞到。
    8 字节,期待它不会被碰撞到。

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

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

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

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

    说白了,就是一个 64 位数,但是现在普遍认为 SHA-256 不够安全,2 ** 256 是 2 ** 64 的 6277101735386680763835789423207666416102355444464034512896 倍,是 2 ** 96 的 1461501637330902918203684832716283019655932542976 倍。
    Jarek
        19
    Jarek   240 天前 via iPhone
    民科终于把手伸向计算机了
    msaionyc
        20
    msaionyc   240 天前
    民科?
    0312birdzhang
        21
    0312birdzhang   239 天前 via Android
    真.儿童节快乐
    pdfgo
        22
    pdfgo   239 天前 via Android
    愚昧无知为耻
    rmb1222
        23
    rmb1222   237 天前 via iPhone
    生日攻击了解一下
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1498 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 20ms · UTC 02:01 · PVG 10:01 · LAX 18:01 · JFK 21:01
    ♥ Do have faith in what you're doing.