qshinoの日記

Powershell関係と徒然なこと

暗号化/復号化関数

$cert: 証明書/暗号:公開鍵、復号:秘密鍵

$plain: 平文

encrypt_(): Base64暗文

$encb64: Base64暗文

decrypt_(): 平文

 

Function encrypt_by_cert( $cert, $plain ){
  Add-type –AssemblyName System.Security
  $bytes = [Text.Encoding]::UTF8.GetBytes($plain)
  $content = new-object Security.Cryptography.Pkcs.ContentInfo –argumentList (,$bytes)
  $e = new-object Security.Cryptography.Pkcs.EnvelopedCms $content
  $e.Encrypt((new-object System.Security.Cryptography.Pkcs.CmsRecipient($cert)))
return [Convert]::ToBase64String( $e.Encode() )

}

 

Function decrypt_by_cert( $cert, $encb64 ){
  $e = new-object Security.Cryptography.Pkcs.EnvelopedCms
  $e.Decode( [Convert]::FromBase64String( $encb64 ) )

  $e.Decrypt( $cert )
return [Text.Encoding]::UTF8.GetString( $e.ContentInfo.Content )

}