#powershell #sha1
Вопрос:
Попробуйте сгенерировать хэш sha1 base64 пустой строки в powershell
$enc = [system.Text.Encoding]::UTF8
$string = ""
$data=$enc.GetBytes($string)
$sha1 = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider
$ResultHash = $sha1.ComputeHash($data)
$str_out = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($ResultHash))
write-host $str_out
результат таков
MjE4IDU3IDE2MyAyMzggOTQgMTA3IDc1IDEzIDUwIDg1IDE5MSAyMzkgMTQ5IDk2IDI0IDE0NCAxNzUgMjE2IDcgOQ==
и я должен был получить
2jmj7l5rSw0yVb/vlWAYkK/YBwk=
Пожалуйста, не мог бы кто-нибудь дать совет?
Ответ №1:
Вывод из ComputeHash
уже является массивом байтов, а не строкой — [Text.Encoding]::UTF8.GetBytes($ResultHash)
здесь нет смысла.
Удалите эту часть, и она будет работать так, как ожидалось:
$enc = [system.Text.Encoding]::UTF8
$string = ""
$data=$enc.GetBytes($string)
$sha1 = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider
$ResultHash = $sha1.ComputeHash($data)
$str_out = [Convert]::ToBase64String($ResultHash)
write-host $str_out
Ответ №2:
Ваша ожидаемая кодированная строка base64 не является кодировкой UTF-8.
Если вы хотите получить 2jmj7l5rSw0yVb/vlWAYkK/YBwk=
, вам придется заменить :
$str_out = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($ResultHash))
Автор:
$str_out = [Convert]::ToBase64String($ResultHash)