| 本帖最后由 呆萌鼠 于 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计算的哈希值对比操作图 
 
 |