PowerShell.PowerLibrary.Encryption.psm1
#region ConvertTo-AesEncrypted FUNCTION ConvertTo-AesEncrypted { <# .Synopsis Encrypt String Value to AES Managed .DESCRIPTION Use this method to Encrypt any input value. .PARAMETER InputValue Any Non Null Value String .EXAMPLE $Password = ConvertTo-AesEncrypted 'test' 'vector' 'salt' #> param ( [ValidateNotNullOrEmpty()] [Parameter(Mandatory = $true, ValueFromPipeline = $true, Position = 0)] [string] $InputValue, [ValidateLength(16, 16)] [ValidateNotNullOrEmpty()] [Parameter(Mandatory = $true, ValueFromPipeline = $true, Position = 1)] [string] $Vector, [ValidateLength(16, 16)] [ValidateNotNullOrEmpty()] [Parameter(Mandatory = $true, ValueFromPipeline = $true, Position = 2)] [string] $Salt ); $VectorBytes = [System.Text.Encoding]::ASCII.GetBytes($Vector); $SaltBytes = [System.Text.Encoding]::ASCII.GetBytes($Salt); $aesManaged = [System.Security.Cryptography.AesManaged]::new(); $aesManaged.Key = $SaltBytes; $aesManaged.IV= $VectorBytes $encryptor = $aesManaged.CreateEncryptor($aesManaged.Key, $aesManaged.IV); $MemoryStream = [System.IO.MemoryStream]::new(); $CryptoStream= [System.Security.Cryptography.CryptoStream]::new($MemoryStream, $encryptor, [System.Security.Cryptography.CryptoStreamMode]::Write); $StreamWriter = [System.IO.StreamWriter]::new($CryptoStream); $StreamWriter.Write($InputValue); $StreamWriter.Dispose(); $StreamWriter = $null; $encrypted = $MemoryStream.ToArray(); $CryptoStream.Dispose(); $CryptoStream = $null; $MemoryStream.Dispose(); $MemoryStream = $null; $aesManaged.Dispose(); $aesManaged = $null; $InputValue = [System.Convert]::ToBase64String($encrypted); RETURN $InputValue; } #endregion #region ConvertFrom-AesEncrypted FUNCTION ConvertFrom-AesEncrypted { <# .Synopsis Decrypt String Value From AES Managed .DESCRIPTION Use this method to Decrypt any input value. .PARAMETER InputValue Any Non Null Value String .EXAMPLE $Password = ConvertFrom-AesEncrypted 'test' 'vector' 'salt' #> param ( [ValidateNotNullOrEmpty()] [Parameter(Mandatory = $true, ValueFromPipeline = $true, Position = 0)] [string] $InputValue, [ValidateLength(16, 16)] [ValidateNotNullOrEmpty()] [Parameter(Mandatory = $true, ValueFromPipeline = $true, Position = 1)] [string] $Vector, [ValidateLength(16, 16)] [ValidateNotNullOrEmpty()] [Parameter(Mandatory = $true, ValueFromPipeline = $true, Position = 2)] [string] $Salt ); $VectorBytes = [System.Text.Encoding]::ASCII.GetBytes($Vector); $SaltBytes = [System.Text.Encoding]::ASCII.GetBytes($Salt); $encrypted = [System.Convert]::FromBase64String($InputValue); $aesManaged = [System.Security.Cryptography.AesManaged]::new(); $aesManaged.Key = $SaltBytes; $aesManaged.IV= $VectorBytes $decryptor = $aesManaged.CreateDecryptor($aesManaged.Key, $aesManaged.IV); $MemoryStream = [System.IO.MemoryStream]::new($encrypted); $CryptoStream = [System.Security.Cryptography.CryptoStream]::new($MemoryStream, $decryptor, [System.Security.Cryptography.CryptoStreamMode]::Read); $StreamReader = [System.IO.StreamReader]::new($CryptoStream); $InputValue = $StreamReader.ReadToEnd(); $StreamReader.Dispose(); $StreamReader = $null; $CryptoStream.Dispose(); $CryptoStream = $null; $MemoryStream.Dispose(); $MemoryStream = $null; $aesManaged.Dispose(); $aesManaged = $null; RETURN $InputValue; } #endregion |