HMAC SHA256 Powershell convert - PullRequest
       22

HMAC SHA256 Powershell convert

0 голосов
/ 29 ноября 2018

Почему следующий скрипт powershell:

$privateKey = "843c1f887b"
$requestData = "1543448572|d.lastname@firm.com|Firstname Lastname"
function signRequest {
    $hmacsha = New-Object System.Security.Cryptography.HMACSHA256
    $hmacsha.key = [Text.Encoding]::ASCII.GetBytes($privateKey)
    $signature = $hmacsha.ComputeHash([Text.Encoding]::ASCII.GetBytes($requestData))
    $signature = [Convert]::ToBase64String($signature)
    $outi = $signature
    return $signature
}

конвертирует в хэш:

FipK51tOtzb2m2yFQAf5IK6BNthClnqE24luMzYMPuo=

и другие онлайн-генераторы hmac sha256 с тем же входным значением:

162a4ae75b4eb736f69b6c854007f920ae8136d842967a84db896e33360c3eea

какие-либо предложения, что я делаю неправильно в сценарии?Спасибо!

1 Ответ

0 голосов
/ 29 ноября 2018

Ваш код выдает правильный HMAC, вы просто кодируете его в base64 вместо вывода шестнадцатеричной строки, как все остальные инструменты.

Измените эту строку

$signature = [Convert]::ToBase64String($signature)

на

$signature = [System.BitConverter]::ToString($signature).Replace('-','').ToLower()

Объяснение:

...