PowerShellでHMAC-SHA256, HMAC-SHA512を使用するサンプルを以下に記します。
例えば、仮想通貨取引所 ZaifのプライベートAPIなどの署名に使用されています。
以下の例は、HMAC-SHA512のサンプルになります。
下記の例では、HMAC-SHA512のオブジェクトを作成しています。
$oHMACSHA512 = New-Object System.Security.Cryptography.HMACSHA512
HMAC-SHA256を使用したい場合は、以下のように512を256に変更するだけで対応できます。
$oHMACSHA256 = New-Object System.Security.Cryptography.HMACSHA256
以下、HMAC-SHA512で署名したサンプルとなります。
$SECRET_KEY = "456"
$oHMACSHA512 = New-Object System.Security.Cryptography.HMACSHA512
$oHMACSHA512.key = [Text.Encoding]::ASCII.GetBytes($SECRET_KEY)
$MESSAGE = "789"
$signature_rawout = $oHMACSHA512.ComputeHash([Text.Encoding]::ASCII.GetBytes($MESSAGE))上記で取得した情報はByte値の配列となります。
$signature = "" $signature_rawout | % { $i = [Convert]::ToString($_,16); if ($i.length -eq 1) { $i ='0' + $i }; $signature += $i }
$signature dc247cecbb2100248bb44f5c935c694e502accf1d397b51f238c18bfe823bd6c5bd948eec004eac42e19ea9dd3f1751006edd60a3437c282785170b235db6ecc
$signatureB64 = [Convert]::ToBase64String($signature_rawout) $signatureB64 3CR87LshACSLtE9ck1xpTlAqzPHTl7UfI4wYv+gjvWxb2UjuwATqxC4Z6p3T8XUQBu3WCjQ3woJ4UXCyNdtuzA==
上記の例を実際にPowerShellコンソール上で動かしてみた出力です。
PS C:\> $SECRET_KEY = "456" PS C:\> $oHMACSHA512 = New-Object System.Security.Cryptography.HMACSHA512 PS C:\> $oHMACSHA512.key = [Text.Encoding]::ASCII.GetBytes($SECRET_KEY) PS C:\> $MESSAGE = "789" PS C:\> $signature_rawout = $oHMACSHA512.ComputeHash([Text.Encoding]::ASCII.GetBytes($MESSAGE)) PS C:\> $signature = "" PS C:\> $signature_rawout | % { $i = [Convert]::ToString($_,16); if ($i.length -eq 1) { $i ='0' + $i }; $signature += $i } PS C:\> $signature dc247cecbb2100248bb44f5c935c694e502accf1d397b51f238c18bfe823bd6c5bd948eec004eac42e19ea9dd3f1751006edd60a3437c282785170b235db6ecc PS C:\> $signatureB64 = [Convert]::ToBase64String($signature_rawout) PS C:\> $signatureB64 3CR87LshACSLtE9ck1xpTlAqzPHTl7UfI4wYv+gjvWxb2UjuwATqxC4Z6p3T8XUQBu3WCjQ3woJ4UXCyNdtuzA== PS C:\>
以上、PowerShellでHMAC-SHAを使用する方法でした。