为了识别别人给我发的文件是不是同一个文件,我写了一个网页计算文件hash值这样更方便识别。

作用

将文件拖拽到页面指定位置,就可以在页面中显示文件的sha1 hash值,可以拖入多个文件,同时得到多个文件hash值用于比对,以第一个文件的hash值作为标准,与之相同的显示为绿色字体,不同则为红色字体,这样,这些文件是不是相同文件一目了然。

产生背景

经常会有不同的人发文件给我,有可能的情况是文件名不一样但是是同一个文件,也有可能文件名一样但不是同一个文件,这十分让我困惑,我不知道这个文件是新的文件还是重复的文件,显然最好比较文件是否相同的方法就是比较文件的hash值,我平常都是使用的右键菜单里7zip提供的"CRC SHA"功能,不仅要在二级菜单中多点几次鼠标,而且每个文件弹出来的都是一个独立的窗口,肉眼无法直观的进行比对,于是想制作一个能够把文件hash值显示在一起的GUI软件,便于比对,而且要支持鼠标拖拽操作,这样可以不用在文件的路径中选来选去容易出错了。

还是本来想需求不复杂,想学习学习新的Windows客户端开发技术,可是最后还是用回了熟悉的html加js,谁说浏览器界面不是界面呢?谁现在还不开一个浏览器呢?但是我的js技术还是10年前的水平,不会也没有用任何外部库和组件,用的都是原生API加CSS样式。这样我全程在ChatGPT的帮助下完成了这个项目。

采用的技术

  • sha1 作为文件的hash值。

  • 并行获取文件的hash。

目前发现的问题

超过2GB大小文件无法获取到hash值。可能是某些浏览器沙箱的限制。

截图

项目地址: drop files in browser to show files hash (github.com)

直接在浏览器打开 index.html 文件就可以使用了。

4 个赞

这个是不是直接开终端 md5 [拖文件过来] 更方便?当然移动端确实有需求。

你说的没错,可是在Windows的终端下面可不是打md5这几个字母,powershell 是Get-FileHash ,cmd 就更复杂了是Certutil -hashfile。既然想用鼠标拖拽,就不想手离开鼠标去敲字了,如果不用鼠标,终端里控制文件路径就太费劲了。

1 个赞

网页也不是无所不能啊。
楼上的powershell,还可以写对应脚本,一拖进去就能用。
不过还是推荐现成的exe软件,别人做过的东西就不要重复发明轮子

抱歉,就是个轮子。不管是终端的命令和有GUI软件的,一般的都是针对单个文件,一次一个文件生成一个结果,我想将多个文件的多个结果展现在一处,不同的结果有颜色区分,一目了然。

2 个赞

轮子不“重复发明”现在都用的是石磨。

可否告知js方法?

Non-cryptographic uses of SubtleCrypto - Web APIs | MDN (mozilla.org)

浏览器里有原生API呀!不同的写法js代码里也有。

感谢楼主,我偶尔会有对比文件的需求,之前用myhash倒是可以计算多个文件,但hash值对比不直观,楼主这个看颜色就一目了然了。 :+1:

1 个赞

终端用fzf或者peco?

或许 这种方法更好用,也方便比较?

如果文件不在同一个目录并且不想移动到同一个目录,或者眼神不太好不愿意比较这么长的字符串,也有下载了文件并且发布者提供了hash的情况,不同的人有不同的需求,不过多一个方法总是好的

说到这个我就不得不推荐小程序大神nirsoft的hashmyfiles了
你想要的功能,对比多个文件,颜色区分等等全都有

3 个赞

可以打包导出然后再上传对比么?

这个好用

搜索了 hashmyfiles

Microsoft Defender Smartscreen 提示
https://www.nirsoft.net/utils/hash_my_files.html 此网站已被人举报不安全

这个又是啥?clover 之后就不知道还有标签页的文件管理器了,不过这个UI有点丑。

啥?打包?上传?

误报吧,我用bing国际版搜索,置顶的结果就是这个地址。360杀毒也没提示。

批量导出 hash 值为一个 x 文件,传给别人,对方接收文件后,再次拖入文件查看 hash,然后上传这个 x 文件,显示是否一致。