mirror of
https://github.com/rvrsh3ll/Misc-Powershell-Scripts
synced 2026-06-21 14:09:04 +00:00
55 lines
1.8 KiB
PowerShell
55 lines
1.8 KiB
PowerShell
function Create-AesManagedObject($key, $IV) {
|
|
# I grabbed this from somewhere. Google it for attribution ;P
|
|
$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
|