首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不同工具的哈希代码值是不同的?

为什么不同工具的哈希代码值是不同的?
EN

Stack Overflow用户
提问于 2015-09-24 05:01:35
回答 1查看 1.2K关注 0票数 0

我已经使用.iso创建了一个fciv.exe文件的哈希代码。我使用了MD5和SHA1算法。然后我在PowerShell中找到了PowerShell cmdlet,因为我很容易使用它。

但是这两个工具都创建了不同的哈希代码。散列算法在所有工具中都应该是唯一的。至少这就是我的理解-我说的对吗?或者这是一种预期的行为?

更新:我已经获取了一个示例文件,并使用fciv.exe和Powershell为此创建了哈希值。

Fciv.exe是按照Sha1创建的

代码语言:javascript
复制
6d9Rar2xh+B5/eEE96pO15EDji0=

在Sha1之后创建的Powershell

代码语言:javascript
复制
E9DF516ABDB187E079FDE104F7AA4ED791038E2D
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-24 06:21:05

它是相同的哈希代码,但Fciv.exe将其显示为BASE64字符串,而Get-FileHash将其显示为HEX字符串:

代码语言:javascript
复制
$Hash=233,223,81,106,189,177,135,224,121,253,225,4,247,170,78,215,145,3,142,45
[Convert]::ToBase64String($Hash)
# 6d9Rar2xh+B5/eEE96pO15EDji0=
[BitConverter]::ToString($Hash)-replace'-'
# E9DF516ABDB187E079FDE104F7AA4ED791038E2D

使用这段代码,您可以将哈希代码的BASE64表示添加到Get-FileHash输出中:

代码语言:javascript
复制
Get-FileHash FileName.iso|
Select-Object Algorithm,
              @{Name='HashHex';Expression='Hash'},
              @{Name='HashBase64';Expression={
                  [Convert]::ToBase64String(@(
                      $_.Hash-split'(?<=\G..)(?=.)'|
                      ForEach-Object {[byte]::Parse($_,'HexNumber')}
                  ))
              }},
              Path
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32753693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档