functions/security/ConvertTo-EncryptedString.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
function ConvertTo-EncryptedString { param( [Parameter(Mandatory = $true, ValueFromPipeline = $true, ParameterSetName = 'SecureString')] [SecureString]$SecureString, [Parameter(Mandatory = $true, ValueFromPipeline = $true, ParameterSetName = 'PlainText')] [string]$PlainText, [Parameter(Mandatory = $false)] [ValidateSet('CurrentUser', 'LocalMachine')] [System.Security.Cryptography.DataProtectionScope]$Scope = [System.Security.Cryptography.DataProtectionScope]::CurrentUser ) begin { $entropy = Get-Entropy } process { if ($PSCmdlet.ParameterSetName -eq 'SecureString') { $encryptedData = [System.Security.Cryptography.ProtectedData]::Protect( [System.Text.Encoding]::Unicode.GetBytes((ConvertFrom-SecureString $SecureString -AsPlainText)), [System.Text.Encoding]::Unicode.GetBytes($entropy), $Scope) } else { $encryptedData = [System.Security.Cryptography.ProtectedData]::Protect( [System.Text.Encoding]::Unicode.GetBytes($PlainText), [System.Text.Encoding]::Unicode.GetBytes($entropy), $Scope) } ConvertTo-Base64 -Bytes $encryptedData } } |