Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 为什么不同工具的哈希代码值不同?_Powershell_Hash_Md5_Sha1_Fciv - Fatal编程技术网

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

Powershell 为什么不同工具的哈希代码值不同?,powershell,hash,md5,sha1,fciv,Powershell,Hash,Md5,Sha1,Fciv,我已经使用fciv.exe创建了.iso文件的哈希代码。我使用了MD5和SHA1算法。然后我在PowerShell中找到了Get-filehash-Path“c:\MyProject.iso”-算法Sha1cmdlet,因为我使用它非常简单 但这两种工具都创建了不同的哈希代码。哈希算法在所有工具中都应该是唯一的。至少我的理解是这样的——我说得对吗?或者这是一种预期的行为 更新: 我已经获取了一个示例文件,并使用fciv.exe和Powershell为其创建了哈希值 Fciv.exe是在Sha1之

我已经使用
fciv.exe
创建了
.iso
文件的哈希代码。我使用了MD5和SHA1算法。然后我在PowerShell中找到了
Get-filehash-Path“c:\MyProject.iso”-算法Sha1
cmdlet,因为我使用它非常简单

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

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

Fciv.exe是在Sha1之后创建的

6d9Rar2xh+B5/eEE96pO15EDji0=
E9DF516ABDB187E079FDE104F7AA4ED791038E2D
Powershell是在Sha1之后创建的

6d9Rar2xh+B5/eEE96pO15EDji0=
E9DF516ABDB187E079FDE104F7AA4ED791038E2D

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

$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
输出:

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
Get FileHash FileName.iso|
选择对象算法,
@{Name='HashHex';Expression='Hash'},
@{Name='HashBase64';表达式={
[转换]::tobase64字符串(@(

$\.Hash split'(?也许您可以发布生成的哈希代码?您的意思是什么?需要您指定要使用的算法,因此:您实际是如何使用它的?您是否使用“您的”md5计算机比较了同一个文件,并将filehash设置为md5,然后将其设置为sha1?它们有何区别?如果您制作了一个内容为“test”的.txt文件,你得到了什么打印?@PetSerAI如何转换,你正在使用一些硬编码的哈希值并进行转换。当我将Get filehash result赋值到变量中时,我无法转换它