Skip to content

Instantly share code, notes, and snippets.

@Graham-Beer
Created September 5, 2018 16:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Graham-Beer/31ee8a4a979101eb6c7b080130a55e1c to your computer and use it in GitHub Desktop.
Save Graham-Beer/31ee8a4a979101eb6c7b080130a55e1c to your computer and use it in GitHub Desktop.
Encrypter / Decrypter
## A PowerShell conversion of the C# code in the article, https://www.c-sharpcorner.com/article/aes-encryption-in-c-sharp/ ##
using namespace System.IO
using namespace System.Security.Cryptography
class ManageAes {
static [void] Main() {
[string] $data = Read-Host -Prompt "Enter text that needs to be encrypted"
[ManageAes]::EncryptAesManaged($data)
}
static [void] EncryptAesManaged([string] $raw) {
try {
$aes = [AesManaged]::new()
[byte[]] $encrypt = [ManageAes]::Encrypt($raw, $aes.Key, $aes.IV)
# encrypted output
$encrypted = [System.Text.Encoding]::UTF8.GetString($encrypt)
[Console]::WriteLine("Encrypted data: $encrypted")
# decrypted output
[string] $decrypted = [ManageAes]::Decrypt($encrypt, $aes.Key, $aes.IV)
[Console]::WriteLine("Decrypted data: $decrypted")
} catch [Exception] {
[Console]::WriteLine($_.Exception.Message)
}
}
static [Byte[]] Encrypt([string] $plainText, [byte[]] $Key, [byte[]] $IV) {
$aes = [AesManaged]::new()
$encryptor = $aes.CreateEncryptor($key, $IV)
$encrypt = [MemoryStream]::new()
$cs = [CryptoStream]::new($encrypt, $encryptor, 'Write')
$writer = [StreamWriter]::new($cs)
$writer.Write($PlainText)
$writer.Close()
[byte[]] $encrypted = $encrypt.ToArray()
return $encrypted
}
static [string] Decrypt([byte[]] $encrypted, [byte[]] $Key, [byte[]] $IV) {
$aes = [AesManaged]::new()
$decrypt = [MemoryStream]::new($encrypted)
$decryptor = $aes.CreateDecryptor($key, $IV)
$cs = [CryptoStream]::new($decrypt, $decryptor, 'Read')
$reader = [StreamReader]::new($cs)
return $reader.ReadToEnd()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment