0

.isoを使用してファイルのハッシュコードを作成しましfciv.exeた。MD5 および SHA1 アルゴリズムを使用しました。次にGet-filehash -Path "c:\MyProject.iso" -Algorithm Sha1、PowerShell でコマンドレットを見つけました。これを使用するのは非常に簡単です。

しかし、どちらのツールも異なるハッシュ コードを作成しました。ハッシュ アルゴリズムは、すべてのツールで一意である必要があります。少なくともそれが私の理解です - 私は正しいですか?それとも期待される動作ですか?

更新: サンプル ファイルを取得し、fciv.exe と Powershell を使用してそのハッシュ値を作成しました。

Sha1に続いて作成されたFciv.exe

6d9Rar2xh+B5/eEE96pO15EDji0=

Sha1に従って作成されたPowershell

E9DF516ABDB187E079FDE104F7AA4ED791038E2D
4

1 に答える 1

2

これは同じハッシュ コードですが、Fciv.exeBASE64 文字列としてGet-FileHash表示し、HEX 文字列として表示します。

$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
于 2015-09-24T06:21:05.080 に答える