Home > Windows にまつわる e.t.c.

HMAC(SHA256) の PowerShell 実装


PowerShell で HMAC(SHA256) 関数書いてみました

###########################################
# HMAC(SHA256) を求める
###########################################
function GetHMAC($Key, $BaseString){

    # 鍵をバイト配列にする
    $KeyByte = [System.Text.Encoding]::UTF8.GetBytes($Key)

    # HMAC を求める文字列をバイト配列にする
    $BaseByte = [System.Text.Encoding]::UTF8.GetBytes($BaseString)

    # アセンブリロード
    Add-Type -AssemblyName System.Security

    # HMAC オブジェクトの生成
    $HMAC = New-Object System.Security.Cryptography.HMACSHA256

    # 鍵のセット
    $HMAC.key = $KeyByte

    # HMAC 値を求める
    $HMACBytes = $HMAC.ComputeHash($BaseByte)

    # HMAC オブジェクトの破棄
    $HMAC.Dispose()

    # HMAC 値を16進文字列にする
    $HMACString = ""
    foreach( $HMACByte in $HMACBytes ){
        $HMACString += $HMACByte.ToString("x2")
    }

    return $HMACString
}

 

鍵の推奨サイズは 512bit (64byte) ですが、長くても短くても処理されます。
(短い場合はパディング、長い場合は SHA256 でハッシュ)

鍵生成は「AES 256 の PowerShell 実装」のおまけにあります。

 

 

関連情報

AES 256 の PowerShell 実装
http://www.vwnet.jp/Windows/PowerShell/AES.htm

SHA-2(SHA256) の PowerShell 実装
http://www.vwnet.jp/Windows/PowerShell/SHA256.htm

RSA 公開鍵暗号の PowerShell 実装
http://www.vwnet.jp/Windows/PowerShell/RSACrypto.htm

RSA 電子署名(SHA256)の PowerShell 実装
http://www.vwnet.jp/Windows/PowerShell/RSASignature.htm

スケジュールジョブ(PowerShell)でパスワードをセキュアに使う(証明書編)
http://www.vwnet.jp/Windows/WS12R2/Password/CertPassword.htm

PowerShell で公開鍵方式暗号ファイルを交換をする
http://www.vwnet.jp/Windows/PowerShell/PublicKeyCrypto.htm

 

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.