Windows 7中是否有用于计算SHA-1或MD5哈希的内置方法?[重复]


37

这个问题已经在这里有了答案:

Windows 7中是否有用于计算SHA-1或MD5哈希的内置方法?



我支持将sha1合并到另一个问题的标题中,并结束该问题
Brian Webster

这个问题不是superuser.com/questions/89191/…的重复。这个问题只要求shell集成,没有命令行。
wisbucky

该解决方案并非Windows 7的内置组件,但如果您已经安装了Git Bash(msy​​s / mingw),则它包含md5sum命令行
wisbucky

3
powershell get-filehash -algorithm sha1 <file_to_check>
克里斯蒂安·朗

Answers:


31

没有内置实用程序,但是Microsoft提供了一个命令行实用程序作为免费下载:

File Checksum Integrity Verifier实用程序的可用性和说明


6
这不再是真的。PowerShell 4添加了Get-FileHash命令。(关于时间,不是吗?)虽然,公平地说,PowerShell 4现在仅安装在最新的Windows操作系统中,但是在较旧的OS上进行升级是非常合理的。(PS4还有很多其他不错的东西。)
jpmc26 2014年

一个主要警告:fciv包含Unicode字符的文件名失败。
Wisbucky

18

没有内置工具。

我使用HashCheck shell扩展:

替代文字


这是我的最爱,因为它是内核扩展(如果他们仍然使用该术语,则不知道)。使用了多年。
David Cowden 2013年

有什么办法可以得到SHA-256哈希吗?
2014年

@DavidCowden:与仅在用户空间上工作的应用程序相比,实现诸如内核扩展之类的功能有什么好处。这不是可能会导致操作系统不稳定吗?
以撒

我想念@以撒。在旧的Windows术语中,它是shell扩展,而不是内核扩展。好处是,它将ui权限直接添加到Windows资源管理器中,因此,如图所示,您可以在文件的属性窗口中查看校验和和哈希值。太整齐了!
大卫·考登

11

它不是完全内置的,但至少您不必下载任何新软件即可使其运行。您可以创建一个powershell脚本来计算文件的MD5sum。实际的脚本可以在这里找到:

http://www.ahmadsoft.org/powershelljunkie/index.html

将该文本复制到一个名为“ ps-md5sum.ps1”的文件中,并将其保存在某处。当需要计算文件的哈希值时,请在要检查的文件目录中打开PowerShell,然后运行它:

[PS] C:\> ps-md5sum.ps1 file-of-choice.exe

并且它应该返回该文件的哈希值。


从乔·普鲁特这PS1脚本模拟了UNIX MD5行为:devcentral.f5.com/weblogs/Joe/archive/2009/05/18/...
布莱恩·赖特




4

除了已经发布的所有重要选项之外,还有md5deep / hashdeep,它是Windows的开源哈希计算套件(但也可以在* nix和OS X系统中使用),它支持:

  • MD5
  • SHA-1
  • SHA-256
  • 惠而浦

md5deep / hashdeep的一些优点:

  • 它是开源和跨平台的。
  • 它从命令行运行,可用于编写脚本。
  • 它为32位和64位系统都优化了二进制文件。
  • 它支持现代的哈希算法(由于验证MD5的冲突已经相对容易了,并且SHA-1冲突在可能范围之内, MD5和SHA-1都在此处被破坏以验证文件完整性和数字签名。)
  • 它可以递归地为整个目录生成校验和。
  • 它可以针对先前生成的校验和列表测试文件或目录,以对目录进行快速审核(识别未知文件或已更改的文件)。

要在Windows中使用它,可以将其安装在Cygwin中,也可以仅在%PATH%变量中包含md5deep目录。虽然我个人更喜欢以下设置:

  1. 将所有文件提取到某处,例如

    %ProgramFiles%\md5deep

  2. 在Windows目录中创建一组批处理文件,例如

    %WinDir%\md5.bat
    %WinDir%\hash.bat
    %WinDir%\sha1.bat
    %WinDir%\sha256.bat
    %WinDir%\tiger.bat
    %WinDir%\whirlpool.bat

  3. 包括相应二进制文件的路径,例如

    md5.bat中
    @ECHO OFF
    "%ProgramW6432%\md5deep\md5deep64.exe" %*(64位系统)
    "%ProgramFiles%\md5deep\md5deep.exe" %*(32位系统)

    hash.bat中
    @ECHO OFF
    "%ProgramW6432%\md5deep\hashdeep64.exe" %*(64位系统)
    "%ProgramFiles%\md5deep\hashdeep.exe" %*(32位系统)
    ...

或者,如果要在WoW64的32位和64位二进制文​​件之间自动切换,可以将32位二进制文​​件%ProgramFiles(x86)%和64 位二进制文​​件放入%ProgramW6432%,然后按如下所示编写批处理文件:

@ECHO OFF
SET cmd=hashdeep
IF "%ProgramFiles%" EQU "%ProgramW6432%" SET cmd=%cmd%64
"%ProgramFiles%\md5deep\%cmd%.exe" %*
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.