Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PS C:\windows\system32> function Create-AesManagedObject($key, $IV) {
- $aesManaged = New-Object "System.Security.Cryptography.AesManaged"
- $aesManaged.Mode = [System.Security.Cryptography.CipherMode]::CBC
- $aesManaged.Padding = [System.Security.Cryptography.PaddingMode]::Zeros
- $aesManaged.BlockSize = 128
- $aesManaged.KeySize = 256
- if ($IV) {
- if ($IV.getType().Name -eq "String") {
- $aesManaged.IV = [System.Convert]::FromBase64String($IV)
- }
- else {
- $aesManaged.IV = $IV
- }
- }
- if ($key) {
- if ($key.getType().Name -eq "String") {
- $aesManaged.Key = [System.Convert]::FromBase64String($key)
- }
- else {
- $aesManaged.Key = $key
- }
- }
- $aesManaged
- }
- function Create-AesKey() {
- $aesManaged = Create-AesManagedObject
- $aesManaged.GenerateKey()
- [System.Convert]::ToBase64String($aesManaged.Key)
- }
- function Encrypt-String($key, $unencryptedString) {
- $bytes = [System.Text.Encoding]::UTF8.GetBytes($unencryptedString)
- $aesManaged = Create-AesManagedObject $key
- $encryptor = $aesManaged.CreateEncryptor()
- $encryptedData = $encryptor.TransformFinalBlock($bytes, 0, $bytes.Length);
- [byte[]] $fullData = $aesManaged.IV + $encryptedData
- $aesManaged.Dispose()
- [System.Convert]::ToBase64String($fullData)
- }
- function Decrypt-String($key, $encryptedStringWithIV) {
- $bytes = [System.Convert]::FromBase64String($encryptedStringWithIV)
- $IV = $bytes[0..15]
- $aesManaged = Create-AesManagedObject $key $IV
- $decryptor = $aesManaged.CreateDecryptor();
- $unencryptedData = $decryptor.TransformFinalBlock($bytes, 16, $bytes.Length - 16);
- $aesManaged.Dispose()
- [System.Text.Encoding]::UTF8.GetString($unencryptedData).Trim([char]0)
- }
- $key = Create-AesKey
- $key
- $unencryptedString = "blahblahblah"
- $encryptedString = Encrypt-String $key $unencryptedString
- $backToPlainText = Decrypt-String $key $encryptedString
- if ($unencryptedString -ne $backToPlainText) {
- throw "encryption didn't work!"
- }
- else {
- Write-Host "Yup, it worked: $backToPlainText "
- }
- LcpiE9jA12LIfRoymLKGjZPcTOUd3KiZ1QO9r1/TOeI=
- Yup, it worked: blahblahblah
- PS C:\windows\system32>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement