首页 > 编程知识 正文

linux校验文件md5命令

时间:2023-05-04 11:12:01 阅读:273825 作者:4803

简介: 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:

SHA1MD5SHA256SHA512

Note:

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

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

CRC32MD5SHA1RIPEMD-160SHA256SHA512SHA3-224SHA3-256SHA3-384SHA3-512

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

@echo offrem 如果文件名有空格,需要用双引号包含set file=d:dos22.chmset hash=CRC32 MD5 SHA1 RIPEMD160 SHA256 SHA512 SHA3-224 SHA3-256 SHA3-384 SHA3-512for %%a in (%hash%) do ( call :verhash %%a)pauseexit:verhash:: 参数1 :hash函数名certutil -hashfile %file% >nul 2>nul %~1 && echo support %~1 || echo unsupport %~1goto :eof

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

输出:

unsupport CRC32support MD5support SHA1unsupport RIPEMD160support SHA256support SHA512unsupport SHA3-224unsupport SHA3-256unsupport SHA3-384unsupport SHA3-512 win7 中 certutil -hashfile 提取hash值方法

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

certutil -hashfile d:dos22.chm MD5MD5 哈希(文件 d:dos22.chm):f2 c4 60 7b 52 6d ed 13 02 21 25 ca 85 26 32 b1CertUtil: -hashfile 命令成功完成。

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

hash.bat

@echo off:: 参数1:文件名set file="%~1"set hash=MD5 SHA1 SHA256 SHA512setlocal enabledelayedexpansionfor %%a in (%hash%) do ( call :gethash %%a !file! rs echo !file! %%a value:!rs!)pauseexit: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:UsersssyDesktop>certutil -hashfile template.md md5MD5 的 template.md 哈希:95c48e3a78dce88505766894fbec7ccaCertUtil: -hashfile 命令成功完成。

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

hash.bat

@echo off:: 参数1:文件名set file="%~1"set hash=MD5 SHA1 SHA256 SHA512setlocal enabledelayedexpansionfor %%a in (%hash%) do ( call :gethash %%a !file! rs echo !file! %%a value:!rs!)pauseexit: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


(完)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。