Windows命令行通过certutil命令查看文件的MD5-SHA1-SHA256校验值

本文介绍了如何在Windows系统中使用certutil命令行工具获取文件的MD5、SHA1和SHA256哈希值,适用于Win7和Win10。此外,还提供了一个在线工具https://www.atool99.com/file_hash.php用于查看多种哈希校验值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介: Windows系统中通过 certutil -hashfile 文件名 hash算法 dos命令可以查看文件的MD5,SHA1,SHA256 哈希校验值,无需第三方工具;通过 https://www.atool99.com/file_hash.php 在线获取 CRC-32、MD5、SHA1、RIPEMD-160、SHA256、SHA512、SHA3-224、SHA3-256、SHA3-384、SHA3-512 哈希校验值。

certutil -hashfile 语法

支持的hash函数有CRC-32,MD5,SHA1,RIPEMD-160,SHA256,SHA512,SHA3-224,SHA3-256,SHA3-384,SHA3-512。

certutil -hashfile 语法如下:

用法:
  CertUtil [选项] -hashfile InFile [HashAlgorithm] 通过文件生成并显示加密哈希

选项:
  -gmt              -- 将时间显示为 GMT
  -seconds          -- 用秒和毫秒显示时间
  -v                -- 详细操作
  -privatekey       -- 显示密码和私钥数据
  
  在win7 / win10 x64中测试以上选项发现都没有作用。
  
CertUtil -?              -- 显示动词列表(命名列表)
CertUtil -hashfile -?    -- 显示 "hashfile" 动词的帮助文本
CertUtil -v -?           -- 显示所有动词的所有帮助文本

注:

win7 / win10 x64中支持的 HashAlgorithm:

  • SHA1
  • MD5
  • SHA256
  • SHA512

Note:

  1. 省略 HashAlgorithm 参数时,默认为SHA1。
  2. 以上哈希函数中字母和数字之间不能试用下划线。
  3. win7中HashAlgorithm 的名称中的字母必须大写,不支持小写(但在win10中大小写均支持)。若用小写字母名称,出现以下错误:
CertUtil: -hashfile 失败: 0xd00000bb (-805306181)
CertUtil: WsResetMetadata

windows cmd命令帮助文档并未说明 HashAlgorithm 都支持那些,微软官网也未加说明。 因此使用前,需要验证当前的windows操作系统 是否支持以下的hash函数。

  • CRC32
  • MD5
  • SHA1
  • RIPEMD-160
  • SHA256
  • SHA512
  • SHA3-224
  • SHA3-256
  • SHA3-384
  • SHA3-512

命令行验证支持以上hash函数的dos批处理文件:

@echo off
rem 如果文件名有空格,需要用双引号包含
set file=d:\dos2\2.chm
set hash=CRC32 MD5 SHA1 RIPEMD160 SHA256 SHA512 SHA3-224 SHA3-256 SHA3-384 SHA3-512
for %%a in (%hash%) do (
  call :verhash %%a
)
pause
exit

:verhash
:: 参数1 :hash函数名
certutil -hashfile %file% >nul 2>nul %~1 && echo support %~1 || echo unsupport %~1
goto :eof

其中的文件名 d:\dos2\2.chm 可替换为自己的文件名。

输出:

unsupport CRC32
support MD5
support SHA1
unsupport RIPEMD160
support SHA256
support SHA512
unsupport SHA3-224
unsupport SHA3-256
unsupport SHA3-384
unsupport SHA3-512

win7 中 certutil -hashfile 提取hash值方法

certutil -hashfile 文件名 hash算法 命令执行如下:

certutil -hashfile d:\dos2\2.chm MD5
MD5 哈希(文件 d:\dos2\2.chm):
f2 c4 60 7b 52 6d ed 13 02 21 25 ca 85 26 32 b1
CertUtil: -hashfile 命令成功完成。

需要的hash值在命令执行结果的第2行,且都是每2位用空格分割,可利用 for /f 命令提取,批处理代码如下:

hash.bat

@echo off
:: 参数1:文件名
set file="%~1"
set hash=MD5 SHA1 SHA256 SHA512
setlocal enabledelayedexpansion
for %%a in (%hash%) do (
  call :gethash %%a !file! rs
  echo !file! %%a value:!rs!
)
pause
exit

:gethash
:: 参数1-3 1:hash函数名  2:文件名 3:返回hash值
for /f "skip=1 tokens=* delims=" %%i in ('certutil -hashfile %2 %~1') do (
  set rs=%%i& set rs=!rs: =!& set %3=!rs!& goto :eof
)

测试:

$ hash.bat 2.chm
"2.chm" MD5 value:f2c4607b526ded13022125ca852632b1
"2.chm" SHA1 value:58dd7f9c4a760f023c904a4e975b454d2ae58caf
"2.chm" SHA256 value:849c7582a569c631534c56dc98c4507a2c285fc2a3c63b54f862f47973df95b5
"2.chm" SHA512 value:89ef681ff18ebe6aad47ab4d616f5d56f5038c60dc95b67c2029de35b9ef16afc47c3065263ccaf72c7a1942026bf0b4ba9925aff007c04d7c937352467ae7da

win10 中 certutil -hashfile 提取hash值方法

certutil -hashfile 文件名 hash算法 命令执行如下:

C:\Users\ssy\Desktop>certutil -hashfile template.md md5
MD5 的 template.md 哈希:
95c48e3a78dce88505766894fbec7cca
CertUtil: -hashfile 命令成功完成。

win10 中和 win7 的差别在于 hash 值并未每2位用空格分隔,可直接提取。

hash.bat

@echo off
:: 参数1:文件名
set file="%~1"
set hash=MD5 SHA1 SHA256 SHA512
setlocal enabledelayedexpansion
for %%a in (%hash%) do (
  call :gethash %%a !file! rs
  echo !file! %%a value:!rs!
)
pause
exit

:gethash
:: 参数1-3 1:hash函数名  2:文件名 3:返回hash值
for /f "skip=1 delims=" %%i in ('certutil -hashfile %2 %~1') do (
  set %3=%%i& goto :eof
)

在线查看文件的各种哈希校验值

推荐一个在线查看文件的各种哈希校验值的网站:
https://www.atool99.com/file_hash.php

在这里插入图片描述
在这里插入图片描述

(完)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值