Public/Misc/ConvertTo-PMPCDigest.ps1
|
<#
.SYNOPSIS Converts a SHA1 hash string into a Base64-encoded digest string. .DESCRIPTION Takes a hexadecimal SHA1 hash string and converts it to its Base64-encoded digest representation. Supports both PowerShell 7+ (using [convert]::FromHexString) and Windows PowerShell 5.1. .PARAMETER Hash The hexadecimal SHA1 hash string to convert. Accepts pipeline input. .EXAMPLE ConvertTo-PMPCDigest -Hash '7465737400' Converts the SHA1 hash string to its Base64 digest representation. .EXAMPLE '7465737400' | ConvertTo-PMPCDigest Converts the SHA1 hash string via pipeline input. #> function ConvertTo-PMPCDigest { [CmdletBinding()] param( [Parameter(ValueFromPipeline = $true, Mandatory = $true)] [string]$Hash ) if ($PSVersionTable.PSVersion.Major -ge 7) { # Convert the hex string back into a byte array $byteArray = [convert]::FromHexString($Hash) # Convert the byte array to a Base64 string $Digest = [convert]::ToBase64String($byteArray) return $Digest } else { # Convert the hex string back into a byte array two characters at a time $byteArray = [byte[]]::new($Hash.Length / 2) for ($i = 0; $i -lt $Hash.Length; $i += 2) { $byteArray[$i / 2] = [convert]::ToByte($Hash.Substring($i, 2), 16) } # Convert the byte array to a Base64 string $Digest = [convert]::ToBase64String($byteArray) return $Digest } } |