Advertisement
Guest User

Test of ctigeek/PowershellAes.ps1

a guest
Apr 11th, 2016
5,051
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. PS C:\windows\system32> function Create-AesManagedObject($key, $IV) {
  2.     $aesManaged = New-Object "System.Security.Cryptography.AesManaged"
  3.     $aesManaged.Mode = [System.Security.Cryptography.CipherMode]::CBC
  4.     $aesManaged.Padding = [System.Security.Cryptography.PaddingMode]::Zeros
  5.     $aesManaged.BlockSize = 128
  6.     $aesManaged.KeySize = 256
  7.     if ($IV) {
  8.         if ($IV.getType().Name -eq "String") {
  9.             $aesManaged.IV = [System.Convert]::FromBase64String($IV)
  10.         }
  11.         else {
  12.             $aesManaged.IV = $IV
  13.         }
  14.     }
  15.     if ($key) {
  16.         if ($key.getType().Name -eq "String") {
  17.             $aesManaged.Key = [System.Convert]::FromBase64String($key)
  18.         }
  19.         else {
  20.             $aesManaged.Key = $key
  21.         }
  22.     }
  23.     $aesManaged
  24. }
  25.  
  26. function Create-AesKey() {
  27.     $aesManaged = Create-AesManagedObject
  28.     $aesManaged.GenerateKey()
  29.     [System.Convert]::ToBase64String($aesManaged.Key)
  30. }
  31.  
  32. function Encrypt-String($key, $unencryptedString) {
  33.     $bytes = [System.Text.Encoding]::UTF8.GetBytes($unencryptedString)
  34.     $aesManaged = Create-AesManagedObject $key
  35.     $encryptor = $aesManaged.CreateEncryptor()
  36.     $encryptedData = $encryptor.TransformFinalBlock($bytes, 0, $bytes.Length);
  37.     [byte[]] $fullData = $aesManaged.IV + $encryptedData
  38.     $aesManaged.Dispose()
  39.     [System.Convert]::ToBase64String($fullData)
  40. }
  41.  
  42. function Decrypt-String($key, $encryptedStringWithIV) {
  43.     $bytes = [System.Convert]::FromBase64String($encryptedStringWithIV)
  44.     $IV = $bytes[0..15]
  45.     $aesManaged = Create-AesManagedObject $key $IV
  46.     $decryptor = $aesManaged.CreateDecryptor();
  47.     $unencryptedData = $decryptor.TransformFinalBlock($bytes, 16, $bytes.Length - 16);
  48.     $aesManaged.Dispose()
  49.     [System.Text.Encoding]::UTF8.GetString($unencryptedData).Trim([char]0)
  50. }
  51.  
  52. $key = Create-AesKey
  53. $key
  54. $unencryptedString = "blahblahblah"
  55. $encryptedString = Encrypt-String $key $unencryptedString
  56. $backToPlainText = Decrypt-String $key $encryptedString
  57.  
  58. if ($unencryptedString -ne $backToPlainText) {
  59.     throw "encryption didn't work!"
  60. }
  61. else {
  62.     Write-Host "Yup, it worked: $backToPlainText "
  63. }
  64.  
  65. LcpiE9jA12LIfRoymLKGjZPcTOUd3KiZ1QO9r1/TOeI=
  66. Yup, it worked: blahblahblah
  67.  
  68. PS C:\windows\system32>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement