私は、RESTプラットフォームから読み込まれているファイルのリストにsha1ハッシュをbase64エンコードしようとしています。ファイルの読み込みがうまくいき、実際にはスクリプト全体がうまく動作しますが、問題は、Base64でSHA1ハッシュの文字列表現をエンコードするしか方法がありませんが、B64では実際のハッシュをエンコードする必要があるということですハッシュの文字列PowershellのBase64エンコーディング
以下は私が使用しているコードの一部ですが、もう一度B64はハッシュの文字列をエンコードしたくはありませんが、ハッシュ自体はエンコードしています。
例として、私がファイルに対して持っているコードの出力は以下の通りです。最初はB64が生のハッシュをエンコードし、もう一つが私たちのコードによって作成されたハッシュです。まったく違うハッシュの文字列値。
ご協力いただければ幸いです。
ソースファイル: /休憩/ CCLAIMS/053/17667053 AERTRMT1xZNrW9TTl6k6Orryiwc12gtJQfJSnlOeWGI =
対象ファイルのハッシュ /休憩/ CCLAIMS/053/17667053 M0U1NDY0NDk1NEJDNjVBRTNEMEU3M0JBNTkyNzk4QzMwQ0M3MEU2NAの==
Function Get-StringHash([String] $String,$HashName = "MD5") {
$StringBuilder = New-Object System.Text.StringBuilder
[System.Security.Cryptography.HashAlgorithm]::Create($HashName).ComputeHash(
[System.Text.Encoding]::UTF8.GetBytes($String)
)|%{
[Void]$StringBuilder.Append($_.ToString("x2"))
}
$StringBuilder.ToString()
}
$hash = "SHA1"
$filehash = Get-FileHash -Path C:\Temp\PS\output.file -Algorithm $hash
$hashvalue = [system.text.encoding]::UTF8.GetBytes($filehash.Hash)
add-content $outputfile ($line + "," + $filehash.Hash + "," + [system.convert]::ToBase64String($hashvalue))
} Catch {
$errormessage = $_.Exception.Message
add-content $outputerrorfile ($line + "," + "Error "+$errormessage)
}