REST 플랫폼에서 읽는 파일 목록에 sha1 해시를 base64로 인코딩하려고합니다. 파일의 다시 읽을 잘 작동하고 사실 전체 스크립트가 제대로 작동하지만 문제는 내가 어떻게 만 Base64 인코딩 SHA1 해시의 문자열 표현을 인코딩 할 수 있습니다,하지만 B64 실제 해시를 인코딩해야합니다. 해시의 캐릭터 라인Powershell의 Base64 인코딩
아래 코드는 내가 사용하고 있지만 다시 B64가 해시 문자열을 암호화하지만 해시 자체를 원하지 않습니다.
예를 들어, 파일에 대한 코드의 출력은 다음과 같습니다. 첫 번째 해시는 B64가 원시 해시를 인코딩하고 다른 해시는 Google 코드로 생성 된 해시입니다. 완전히 다른 해쉬의 문자열 값.
도움을 주시면 감사하겠습니다.
소스 파일 : 코드에 대한 /휴식/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)
}