本帖最后由 呆萌鼠 于 2025-10-31 23:08 编辑
哈希值验证、对比的鼠标右键bat批处理
对于经常使用哈希值验证的人可能比较方便,今天用豆包和deepseek花一上午制作完成,,有什么问题可以提出来共同探讨,希望各位大佬批评指正!
Windows系统里面就有程序可以计算文件的哈希值,对win10、win11没有问题,其他系统有的有,有的没有。我们知道哈希值大小写对验证结果没有影响,而且现在MD5和SHA-1有漏洞已弃用,大多数人都在用SHA-256,所以根据以上制作了方便使用的bat批处理,只针对单个文件的哈希值验证,不分大小写,都可以一下验证对比给出结果。 1 先复制作者的哈希值的验证bat
- @echo off
- chcp 65001 >nul 2>&1 :: 支持中文路径
- setlocal enabledelayedexpansion
- :: 1. 检查文件是否存在
- if not exist "%~1" (
- echo 错误:文件不存在!
- echo 路径:%~1
- pause
- exit /b 1
- )
- :: 2. 读取剪贴板中的作者哈希值(预先复制好)
- echo 正在读取剪贴板中的作者哈希值...
- for /f "delims=" %%i in ('powershell -Command "Get-Clipboard -Format Text" 2^>nul') do (
- set "author_hash=%%i"
- )
- :: 检查剪贴板是否有内容
- if "!author_hash!"=="" (
- echo 错误:剪贴板中未检测到哈希值,请先复制作者公布的哈希值!
- pause
- exit /b 1
- )
- :: 处理作者哈希值(去空格)
- set "author_hash=!author_hash: =!"
- :: 3. 计算文件的SHA-256哈希值
- echo 文件名:%~nx1
- echo 路径:%~1
- echo ---------------------------
- echo 正在计算文件的SHA-256哈希值...
- for /f "skip=1 delims=" %%a in ('certutil -hashfile "%~1" sha256') do (
- set "calc_hash=%%a"
- set "calc_hash=!calc_hash: =!" :: 去除空格
- goto :hash_done
- )
- :hash_done
- :: 4. 统一转小写,消除大小写影响
- for /f "delims=" %%i in ('powershell -Command "$env:calc_hash.ToLower()"') do set "calc_hash_lower=%%i"
- for /f "delims=" %%i in ('powershell -Command "$env:author_hash.ToLower()"') do set "author_hash_lower=%%i"
- :: 5. 自动对比并显示结果
- echo ---------------------------
- echo 本地计算哈希值:!calc_hash_lower!
- echo 剪贴板作者哈希值:!author_hash_lower!
- echo ---------------------------
- if "!calc_hash_lower!"=="!author_hash_lower!" (
- echo 对比结果:^√ 哈希值一致,文件完整无篡改!
- ) else (
- echo 对比结果:^× 哈希值不一致,文件可能已损坏或被篡改!
- )
- echo ---------------------------
- pause
复制代码
2后复制作者的哈希值的验证bat
- @echo off
- chcp 65001 >nul 2>&1 :: 支持中文路径
- setlocal enabledelayedexpansion
- :: 1. 检查文件是否存在
- if not exist "%~1" (
- echo 错误:文件不存在!
- echo 路径:%~1
- pause
- exit /b 1
- )
- :: 2. 计算SHA-256哈希值并提取纯哈希字符串
- echo 文件名:%~nx1
- echo 路径:%~1
- echo ---------------------------
- echo 正在计算SHA-256哈希值...
- :: 提取纯哈希值(跳过首行提示,去除空格)
- for /f "skip=1 delims=" %%a in ('certutil -hashfile "%~1" sha256') do (
- set "calc_hash=%%a"
- set "calc_hash=!calc_hash: =!" :: 去除哈希值中的空格
- goto :hash_done
- )
- :hash_done
- :: 3. 显示并复制哈希值到剪贴板
- echo SHA-256哈希值:!calc_hash!
- echo (已自动复制到剪贴板,可直接粘贴对比)
- echo ---------------------------
- echo !calc_hash! | clip
- :: 4. 手动粘贴作者哈希值并处理
- set /p "author_hash=请粘贴作者公布的SHA-256哈希值:"
- set "author_hash=!author_hash: =!" :: 去除作者哈希值中的空格
- :: 【关键修复】统一将两个哈希值转成小写(彻底解决大小写问题)
- for /f "delims=" %%i in ('powershell -Command "$env:calc_hash.ToLower()"') do set "calc_hash_lower=%%i"
- for /f "delims=" %%i in ('powershell -Command "$env:author_hash.ToLower()"') do set "author_hash_lower=%%i"
- :: 5. 对比结果并提示
- if "!calc_hash_lower!"=="!author_hash_lower!" (
- echo ---------------------------
- echo 对比结果:^√ 哈希值一致,文件完整无篡改!
- ) else (
- echo ---------------------------
- echo 对比结果:^× 哈希值不一致,文件可能已损坏或被篡改!
- echo 本地计算值(小写):!calc_hash_lower!
- echo 作者提供值(小写):!author_hash_lower!
- )
- echo ---------------------------
- pause
复制代码
将bat文件移动到需要存储的位置后用鼠标右键管理器ContextMenuManager添加到右键菜单即可。
先复制作者的哈希值的验证bat的使用方法: 第一步复制作者的哈希值 第二步 鼠标右键点击需要验证的文件,再点击添加的菜单项,等待就会计算并且对比验证出结果。
后复制制作者的哈希值的验证bat的使用方法:就是将上面的顺序倒过来 第一步鼠标右键点击需要验证的文件,再点击添加的菜单项,cmd终端会计算出哈希值,这时候会提示将作者的哈希值粘贴进来。第二步复制作者的哈希值并且粘贴进cmd对话框并回车,会立刻出对比结果。
我个人比较喜欢1先复制作者的哈希值的验证代码的方法,等待计算结束就出验证结果。 不太会操作的新手可以下载我制作好的一键导入注册表即可 地址:https删除://wwcg.lanzouu.删除com/i86ov39sdnif密码:4kdd
和7-Zip计算的哈希值对比操作图
|