哈希值是对应于文件内容的唯一值。 哈希不按文件文件名、扩展名或其他指定来标识文件的内容,而是为文件的内容分配唯一值,即使在文件内容中更改单个字符也会更改文件的哈希值。
目录
运行环境:
- Windows-7-Ultimate-x64、Windows-10-BusinessEditions-22h2-x64
1、Certutil
在“开始菜单>>Windows系统>>命令提示符”窗口,使用 Certutil 命令对进行文件MD5、SHA1值校验等。

1.1、Certutil命令格式
Certutil.exe 是作为证书服务的一部分安装的命令行程序。可以使用 certutil.exe 显示证书颁发机构(CA)配置信息、配置证书服务以及备份和还原 CA 组件。该计划还会验证证书、密钥对和证书链。
命令格式:
certutil -hashfile "文件路径" 校验的Hash值类型
使用说明:
- 校验的Hash值类型包括:SHA1、SHA256、SHA384、SHA512、MD5。
- 如果未指定“校验的Hash值类型”参数,默认验证的是SHA1值。
1.2、Certutil使用举例
示例1、校验MD5值:
certutil -hashfile "C:\Windows\notepad.exe" MD5

示例2、校验SHA256值:
certutil -hashfile "C:\Windows\notepad.exe" SHA256

1.3、Certutil语法及参数
Microsoft Windows [版本 10.0.19045.2965]
(c) Microsoft Corporation。保留所有权利。
C:\Users\Docer>certutil /?
动词:
-dump -- 转储配置信息或文件
-dumpPFX -- 转储 PFX 结构
-asn -- 分析 ASN.1 文件
-decodehex -- 解码十六进制编码的文件
-decode -- 解码 Base64 编码的文件
-encode -- 将文件编码为 Base64
-deny -- 拒绝挂起的申请
-resubmit -- 重新提交挂起的申请
-setattributes -- 为挂起申请设置属性
-setextension -- 为挂起申请设置扩展
-revoke -- 吊销证书
-isvalid -- 显示当前证书部署
-getconfig -- 获取默认配置字符串
-ping -- Ping Active Directory 证书服务申请接口
-pingadmin -- Ping Active Directory 证书服务管理接口
-CAInfo -- 显示 CA 信息
-ca.cert -- 检索 CA 的证书
-ca.chain -- 检索 CA 的证书链
-GetCRL -- 获取 CRL
-CRL -- 发布新的 CRL [或仅增量 CRL]
-shutdown -- 关闭 Active Directory 证书服务
-installCert -- 安装证书颁发机构证书
-renewCert -- 续订证书颁发机构证书
-schema -- 转储证书架构
-view -- 转储证书视图
-db -- 转储原始数据库
-deleterow -- 删除服务器数据库行
-backup -- 备份 Active Directory 证书服务
-backupDB -- 备份 Active Directory 证书服务数据库
-backupKey -- 备份 Active Directory 证书服务证书和私钥
-restore -- 还原 Active Directory 证书服务
-restoreDB -- 还原 Active Directory 证书服务数据库
-restoreKey -- 还原 Active Directory 证书服务证书和私钥
-importPFX -- 导入证书和私钥
-dynamicfilelist -- 显示动态文件列表
-databaselocations -- 显示数据库位置
-hashfile -- 通过文件生成并显示加密哈希
-store -- 转储证书存储
-enumstore -- 枚举证书存储
-addstore -- 将证书添加到存储
-delstore -- 从存储删除证书
-verifystore -- 验证存储中的证书
-repairstore -- 修复密钥关联,或者更新证书属性或密钥安全描述符
-viewstore -- 转储证书存储
-viewdelstore -- 从存储删除证书
-UI -- 调用 CryptUI
-attest -- 验证密钥证明请求
-dsPublish -- 将证书或 CRL 发布到 Active Directory
-ADTemplate -- 显示 AD 模板
-Template -- 显示注册策略模板
-TemplateCAs -- 显示模板的 CA
-CATemplates -- 显示 CA 的模板
-SetCASites -- 管理 CA 的站点名称
-enrollmentServerURL -- 显示、添加或删除与 CA 关联的注册服务器 URL
-ADCA -- 显示 AD CA
-CA -- 显示注册策略 CA
-Policy -- 显示注册策略
-PolicyCache -- 显示或删除注册策略缓存项目
-CredStore -- 显示、添加或删除凭据存储项目
-InstallDefaultTemplates -- 安装默认的证书模板
-URLCache -- 显示或删除 URL 缓存项目
-pulse -- 以脉冲方式执行自动注册事件或 NGC 任务
-MachineInfo -- 显示 Active Directory 计算机对象信息
-DCInfo -- 显示域控制器信息
-EntInfo -- 显示企业信息
-TCAInfo -- 显示 CA 信息
-SCInfo -- 显示智能卡信息
-SCRoots -- 管理智能卡根证书
-DeleteHelloContainer -- 删除 Hello 登录容器。
** 在使用此选项后, 用户需要注销才能完成。**
-verifykeys -- 验证公/私钥集
-verify -- 验证证书,CRL 或链
-verifyCTL -- 验证 AuthRoot 或不允许的证书 CTL
-syncWithWU -- 与 Windows 更新同步
-generateSSTFromWU -- 通过 Windows 更新生成 SST
-generatePinRulesCTL -- 生成捆绑规则 CTL
-downloadOcsp -- 下载 OCSP 响应并写入目录
-generateHpkpHeader -- 使用指定文件或目录中的证书生成 HPKP 头
-flushCache -- 刷新选定进程(例如 lsass.exe)中的指定缓存
-addEccCurve -- 添加 ECC 曲线
-deleteEccCurve -- 删除 ECC 曲线
-displayEccCurve -- 显示 ECC 曲线
-sign -- 重新签名 CRL 或证书
-vroot -- 创建/删除 Web 虚拟根和文件共享
-vocsproot -- 创建/删除 OCSP Web Proxy 的 Web 虚拟根
-addEnrollmentServer -- 添加注册服务器应用程序
-deleteEnrollmentServer -- 删除注册服务器应用程序
-addPolicyServer -- 添加策略服务器应用程序
-deletePolicyServer -- 删除策略服务器应用程序
-oid -- 显示 ObjectId 或设置显示名称
-error -- 显示错误代码消息文本
-getreg -- 显示注册表值
-setreg -- 设置注册表值
-delreg -- 删除注册表值
-ImportKMS -- 为密钥存档导入用户密钥和证书到服务器数据库
-ImportCert -- 将证书文件导入数据库
-GetKey -- 检索存档的私钥恢复 Blob,生成恢复脚本 或恢复存档的密钥
-RecoverKey -- 恢复存档的私钥
-MergePFX -- 合并 PFX 文件
-ConvertEPF -- 将 PFX 文件转换为 EPF 文件
-add-chain -- (-AddChain) 添加证书链
-add-pre-chain -- (-AddPrechain) 添加预植证书链
-get-sth -- (-GetSTH) 获取签名树头
-get-sth-consistency -- (-GetSTHConsistency) 获取签名树头更改
-get-proof-by-hash -- (-GetProofByHash) 获取哈希证明
-get-entries -- (-GetEntries) 获取项
-get-roots -- (-GetRoots) 获取根
-get-entry-and-proof -- (-GetEntryAndProof) 获取项和证明
-VerifyCT -- 验证证书 SCT
-? -- 显示该用法消息
CertUtil -? -- 显示动词列表(命名列表)
CertUtil -dump -? -- 显示 "dump" 动词的帮助文本
CertUtil -v -? -- 显示所有动词的所有帮助文本
CertUtil: -? 命令成功完成。
2、Get-FileHash
在“开始菜单>>Windows PowerShell>>Windows PowerShell”窗口,使用 Get-FileHash 命令对进行文件MD5、SHA1值校验。

2.1、Get-FileHash命令格式
Get-FileHash 使用指定的哈希算法计算文件的哈希值。
命令格式:
Get-FileHash "文件路径" -Algorithm 校验的Hash值类型 | Format-List
使用说明:
- 校验的Hash值类型包括:SHA1、SHA256、SHA384、SHA512、MACTripleDES、MD5、RIPEMD160,暂不支持校验CRC32值。
- 如果不带-Algorithm参数,默认验证的是SHA256值。
2.2、Get-FileHash使用举例
示例1、校验MD5值:
Get-FileHash "C:\Windows\notepad.exe" -Algorithm MD5 | Format-List

示例2、校验SHA256值:
Get-FileHash "C:\Windows\notepad.exe" | Format-List
Get-FileHash "C:\Windows\notepad.exe" -Algorithm SHA256 | Format-List

3、实践总结
哈希值的目的是提供一种加密安全的方法来验证文件的内容是否已更改。虽然某些哈希算法(包括 MD5 和 SHA1)不再被视为安全免受攻击,但安全哈希算法的目标是使无法更改文件的内容(无论是意外的还是恶意的或未经授权的尝试),并维护相同的哈希值。还可以使用哈希值来确定两个不同的文件是否完全相同的内容。
- 如果两个文件的哈希值相同,则文件的内容也相同。
- 即使在文件内容中更改单个字符也会更改文件的哈希值。
附录:

1413

被折叠的 条评论
为什么被折叠?



