写了一个纯浏览器计算 MD5 的工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
3dwelcome
V2EX    分享创造

写了一个纯浏览器计算 MD5 的工具

  •  
  •   3dwelcome 2022-02-07 15:12:32 +08:00 3624 次点击
    这是一个创建于 1419 天前的主题,其中的信息可能已经有所发展或是发生改变。
    尝试性用 JS 处理批量文件,没想到速度还挺快的。

    https://tool2d.com/#hashtool

    21 条回复    2022-02-14 15:55:36 +08:00
    3dwelcome
        1
    3dwelcome  
    OP
       2022-02-07 15:20:29 +08:00
    说一下为什么要加入 SHA384 这种奇怪的算法。

    是因为在 HTML 里,可以写成《 script type="text/Javascript" src="file.js" integrity="sha384-7sS22HW0Ysm52kESvFEMf9indNH+3BYSMQzmC1FP57h2Ubwya50bu7FuHGa8N75D" crossorigin="anonymous"》《/script 》之类的。

    有 integrity 保护后,对于第三方不信任的 CDN ,就无法插入额外代码,确保 JS 资源 100%正确性。
    pengtdyd
        2
    pengtdyd  
       2022-02-07 15:25:34 +08:00
    学到一个新的知识点
    linglin0924
        3
    linglin0924  
       2022-02-07 15:26:17 +08:00
    这个交互,我还以为会上传我的文件到服务器呢,还是在我的本地浏览器里计算的。
    3dwelcome
        4
    3dwelcome  
    OP
       2022-02-07 15:31:10 +08:00
    @linglin0924 是的,上传提示是 chrome 给的,很容易被误导。
    duke807
        5
    duke807  
       2022-02-07 15:31:58 +08:00 via Android
    md5sum *
    一命令就行不香?
    zagfai
        6
    zagfai  
       2022-02-07 15:43:46 +08:00
    @duke807 这就是命令爱好者和 UI 爱好者的区别,我有个朋友和我持相反观点,我大部分操作都用命令,他没有 UI 他就不用。。。我们谁都没法说服谁。。
    0ZXYDDu796nVCFxq
        7
    0ZXYDDu796nVCFxq  
       2022-02-07 16:01:15 +08:00 via Android   1
    友情提醒一下楼主
    如果你截图的文件是私有的,并且同步到了百度云盘或者阿里云盘之类的,别人通过 md5 碰撞或者调用接口,是可以“秒传”你的文件的
    duke807
        8
    duke807  
       2022-02-07 16:15:54 +08:00 via Android
    @zagfai 我不是什命令行好者,怎方便怎,然我用 linux 做主力系十年,但是我代依然首 eclipse 、gedit 等形界面,而不是 vim emacs ,反感命令行的人估都是用的 windows 系:命令行有色、有全、字巨、不能自由改窗口大小、又有好用的支持命令行的程序,我也不用命令行,所以不是命令行的,是 windows 系的,然 windows 也在改善,只不永要比其它系慢十年
    3dwelcome
        9
    3dwelcome  
    OP
       2022-02-07 16:20:25 +08:00
    @duke807 原来 md5sum 是 linux 下的命令,难怪我都没听说过。

    主要是这种程序 GUI 很简单,算法都是标准库,随手写两行 API ,功能就做完了。
    boris93
        10
    boris93  
       2022-02-07 16:41:28 +08:00 via iPhone
    @duke807 #8 其实就是不要搞这类无谓的党争,怎么舒服怎么来
    硬要说我也是命令行爱好者,但我绝不会硬着头皮用 vi 写 Java ,毕竟这是给自己添堵还降低我的生产力
    我也不喜欢用 Windows 写代码,那我就把我的 Windows 机器当游戏机,写代码基本用我的 MacBook
    duke807
        11
    duke807  
       2022-02-07 17:02:42 +08:00 via Android
    @3dwelcome 果也自有 md5 命令,就叫做 md5

    速度肯定要慢很多,文件大一甚至器直接崩掉,你可以加 G 大小的文件
    qq316107934
        12
    qq316107934  
       2022-02-07 17:53:59 +08:00
    @gstqc 没这么简单的,碰撞一般还需要文件大小+文件前 256K 的 hash ,防止 MD5 本身发生碰撞
    3dwelcome
        13
    3dwelcome  
    OP
       2022-02-07 18:03:55 +08:00
    @duke807 “你可以加 G 大小的文件”

    浏览器肯定有局限性,没有流式数据,肯定没办法处理几个 G 大小的文件。

    但以前写的工具都是独乐乐,不如我们一起移植到网页上,变成众乐乐。
    duke807
        14
    duke807  
       2022-02-07 19:34:42 +08:00 via Android
    @3dwelcome 我也不是反,我 gui 工具和手 app 也都是基於,譬如我源的加密小工具: /t/832302 ,朋友反一百 M 的文件器就不行了

    你工具合默有 md5 工具的用,和手用(你的工具目前手使用貌似有 bug ),不同的工具有很多,可能支持目的不多吧
    0ZXYDDu796nVCFxq
        15
    0ZXYDDu796nVCFxq  
       2022-02-07 19:38:43 +08:00 via Android
    @qq316107934 百度云盘的是 md5 ,没有额外的数据
    rekulas
        16
    rekulas  
       2022-02-07 22:20:14 +08:00
    @3dwelcome
    @duke807 浏览器可以流式读取文件的,所以理论上可以处理大文件的,当然受限于实际情况可能会有上限
    很多前端 md5 默认 hash 是一次性载入文件计算,文件大了可能会卡,可以改成分段计算,反正我们自己的工具计算 G 级文件并没有明显的问题
    PolarBears
        17
    PolarBears  
       2022-02-08 02:50:25 +08:00
    @gstqc #17 除了文件 md5 以外还需要前 256 KiB 的 MD5 和文件大小(字节)
    iqoo
        18
    iqoo  
       2022-02-08 11:28:29 +08:00
    @3dwelcome 早就有流式数据了,file blob slice 记得十多年前就有了。
    abersheeran
        19
    abersheeran  
       2022-02-11 13:20:04 +08:00
    https://pixiv.app/hashing 巧了,之前也写了一个,文件或者文本的哈希值都可以计算,常见的哈希算法都包括在内了
    3dwelcome
        20
    3dwelcome  
    OP
       2022-02-11 13:59:42 +08:00
    @abersheeran 你的算法好全。

    我总觉得纯 JS 计算 SHA384 和 SHA512 很慢,特别处理大于 5M 文件的情况下。

    有一种未来会改成 WASM 来计算的预感。
    duke807
        21
    duke807  
       2022-02-14 15:55:36 +08:00 via Android
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2568 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 06:30 PVG 14:30 LAX 22:30 JFK 01:30
    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