Powershellでハッシュ計算

いわゆるフィンガープリント用ですね。
.NETのSystem.Security.Cryptography名前空間を利用しているので、SHA256/SHA384/SHA512あたりも同様です。

# ハッシュ値を計算する
function Calc-Hash([System.Security.Cryptography.HashAlgorithm] $alg, [string] $s, [bool] $file = $false) {
  if($file) {
    #ハッシュ値を計算するStream
    $stream = New-Object IO.StreamReader $s
  } else {
    #文字列をbyte型配列に変換する
    $data = [System.Text.Encoding]::ASCII.GetBytes($s)
  }

  # ハッシュ値を計算する  
  if($file) {
    $hash = $alg.ComputeHash($stream.BaseStream)
  } else {
    $hash = $alg.ComputeHash($data)
  }
  return [System.BitConverter]::ToString($hash).ToLower().Replace("-","")
}


# 例
# 文字列のハッシュ値(「ハッシュアルゴリズム 対象文字列」を渡す)
$md5 = [System.Security.Cryptography.MD5]::Create()
Calc-Hash $md5 "hogehoge"

# ファイルのハッシュ値(「ハッシュアルゴリズム パス $true」を渡す)
Calc-Hash $md5 "xxxx.zip" $true
Calc-Hash ([System.Security.Cryptography.SHA1]::Create()) "xxxx.zip" $true