PublicEncrypt.psm1
function ConvertTo-EncryptedString { [CmdletBinding()] param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )][String]$String, [Parameter( Mandatory = $true, Position = 1 )][String]$PublicKey ) $UTFEncoder = [System.Text.Encoding]::UTF8 $X509Certificate = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList @(, $UTFEncoder.GetBytes($PublicKey)) $Envelope = New-Object -TypeName System.Security.Cryptography.Pkcs.EnvelopedCms -ArgumentList ( New-Object -TypeName System.Security.Cryptography.Pkcs.ContentInfo -ArgumentList @(, $UTFEncoder.GetBytes($String)) ) $Envelope.Encrypt( (New-Object -TypeName System.Security.Cryptography.Pkcs.CmsRecipient($X509Certificate)) ) return [System.Convert]::ToBase64String( $Envelope.Encode() ) } function ConvertFrom-EncryptedString { [CmdletBinding()] param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )][String]$EncryptedString ) $UTFEncoder = [System.Text.Encoding]::UTF8 $Envelope = New-Object -TypeName System.Security.Cryptography.Pkcs.EnvelopedCms $Envelope.Decode( [Convert]::FromBase64String($EncryptedString) ) $Envelope.Decrypt() $UTFEncoder.GetString($Envelope.ContentInfo.Content) } |