安装包没换过吗?AutoHotkey 文件哈希两行脚本出 SHA256
【免费下载链接】AutoHotkeyAutoHotkey - macro-creation and automation-oriented scripting utility for Windows.项目地址: https://gitcode.com/gh_mirrors/au/AutoHotkey
刚下载的安装包、昨晚同步过来的备份,肉眼看不出它有没有被动过。AutoHotkey 的文件哈希功能把一个文件的 MD5、SHA1、SHA256、SHA512 摘要一次算出来,拿到官方公布的值一对,真假立现。对外分发软件、归档重要数据之前,跑一次哈希比对一下,比什么都踏实。下面从克隆仓库到批量校验,3 步拿到你手上第一个哈希值。
从克隆到出值,只要 3 步
先把项目克隆到本地磁盘,就能拿到完整源码和解决方案文件 AutoHotkeyx.sln:
git clone https://gitcode.com/gh_mirrors/au/AutoHotkey再用 Visual Studio 打开根目录的 AutoHotkeyx.sln,选 Debug 或 Release 编译,产物是一个独立 exe,不需要额外配置。自己编译的好处是产物完全可控,Debug 版方便断点查问题,Release 版用来日常跑。
剩下写两行脚本,把文件路径和算法丢进去,取回哈希值。exe 也支持从命令行直接调用,方便挂进批处理:
; 算一个文件的 SHA256 MsgBox, FileHash("C:\downloads\setup.exe", "SHA256")选算法:MD5 还是 SHA256
| 算法 | 摘要位数 | 一句话定位 |
|---|---|---|
| MD5 | 128 位 | 快速完整性自查,兼容老系统 |
| SHA1 | 160 位 | 旧版分发签名,正在被替代 |
| SHA256 | 256 位 | 软件分发、安装介质校验首选 |
| SHA512 | 512 位 | 高安全场景、归档与密钥相关校验 |
日常分发校验直接用 SHA256,MD5 只做本地快速比对。位数越高抗碰撞越强,单次计算略慢,按文件价值取用即可。
改之前先看这三个文件
读源码或排查问题前,先记这张便签:
- string.cpp:字符串哈希实现,输入文本直接出摘要值
- file.cpp:文件哈希实现,按块读盘边读边累积
- functions.h:内置函数声明清单,查参数顺序和返回值类型
想搞清楚某个函数的行为,直接按文件名进目录翻实现,比到处搜快得多。
批量跑、接流水线
场景 A:循环遍历整个目录,逐个算值写进文本报告。挂到夜间计划任务,备份目录每天自查一遍,报告里哪个值对不上,哪个文件就标红处理:
LoopFiles, C:\downloads\*.exe, F FileAppend, %A_FileName% %FileHash(A_FullPath, "SHA256")`n, report.txt场景 B:算出的值直接接进已有的备份、审计或分发脚本。把返回值丢给 FileAppend、Run 这些现成接口,塞进你已有的流程里,不用再单独开窗口对文件。比如备份完把当天所有文件的摘要追加进日志,审计时一行命令就能回查。
顺带说两个常被问到的问题。大文件不会爆内存:文件路径走分块读取,边读边累积摘要,几 GB 的盘镜像内存占用也基本恒定。文件多的时候,用 Thread 派生多条线程并发计算,每条线程认领一批文件,文件越多省下的时间越明显。
今晚就对最近下载的那个安装包跑一次 SHA256,把值存进 txt。下次更新再比一次,值不一样就知道文件被换过。
【免费下载链接】AutoHotkeyAutoHotkey - macro-creation and automation-oriented scripting utility for Windows.项目地址: https://gitcode.com/gh_mirrors/au/AutoHotkey
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考