Contenidos
AES se basa en Rijndael pero con el tamaño de bloque restringido a 128 bits. Rijndael admite una gama más amplia de tamaños de bloque y muchas bibliotecas criptográficas proporcionan una implementación de Rijndael separada para complementar AES.
Cifrar con AES Rijndael de 256 y modo de operación de unidad de cifrado ECB desde PowerShell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
function Encrypt-Rijndael256ECB { param( [byte[]]$Key, [string]$Plaintext ) $RijndaelProvider = New-Object -TypeName System.Security.Cryptography.RijndaelManaged # Set block size to 256 to imitate MCRYPT_RIJNDAEL_256 $RijndaelProvider.BlockSize = 256 # Make sure we use ECB mode, or the generated IV will fuck up the first block upon decryption $RijndaelProvider.Mode = [System.Security.Cryptography.CipherMode]::ECB $RijndaelProvider.Key = $key # This object will take care of the actual cryptographic transformation $Encryptor = $RijndaelProvider.CreateEncryptor() # Set up a memorystream that we can write encrypted data back to $EncMemoryStream = New-Object System.IO.MemoryStream $EncCryptoStream = New-Object System.Security.Cryptography.CryptoStream -ArgumentList $EncMemoryStream,$Encryptor,"Write" $EncStreamWriter = New-Object System.IO.StreamWriter -ArgumentList $EncCryptoStream # When we write data back to the CryptoStream, it'll get encrypted and written back to the MemoryStream $EncStreamWriter.Write($Plaintext) # Close the writer $EncStreamWriter.Close() # Close the CryptoStream (pads and flushes any data still left in the buffer) $EncCryptoStream.Close() $EncMemoryStream.Close() # Read the encrypted message from the memory stream $Cipher = $EncMemoryStream.ToArray() -as [byte[]] $CipherText = [convert]::ToBase64String($Cipher) # return base64 encoded encrypted string return $CipherText } Encrypt-Rijndael256ECB ([System.Text.Encoding]::ASCII.GetBytes('This is my secre')) "This is my plain text" |
Descifrar con AES Rijndael de 256 y modo de operación de unidad de cifrado ECB desde PowerShell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
function Decrypt-Rijndael256ECB { param( [byte[]]$Key, [string]$CipherText ) $RijndaelProvider = New-Object -TypeName System.Security.Cryptography.RijndaelManaged $RijndaelProvider.Mode = [System.Security.Cryptography.CipherMode]::ECB $RijndaelProvider.BlockSize = 256 $RijndaelProvider.Key = $key $Decryptor = $RijndaelProvider.CreateDecryptor() # Reverse process: Base64Decode first, then populate memory stream with ciphertext and lastly read decrypted data through cryptostream $Cipher = [convert]::FromBase64String($CipherText) -as [byte[]] $DecMemoryStream = New-Object System.IO.MemoryStream -ArgumentList @(,$Cipher) $DecCryptoStream = New-Object System.Security.Cryptography.CryptoStream -ArgumentList $DecMemoryStream,$Decryptor,$([System.Security.Cryptography.CryptoStreamMode]::Read) $DecStreamWriter = New-Object System.IO.StreamReader -ArgumentList $DecCryptoStream $NewPlainText = $DecStreamWriter.ReadToEnd() $DecStreamWriter.Close() $DecCryptoStream.Close() $DecMemoryStream.Close() return $NewPlainText } Decrypt-Rijndael256ECB ([System.Text.Encoding]::UTF8.GetBytes('This is my secre')) "EiD0+2W4vLjtyCWzIsO1PAXdmmY++0N0zl1C91le3CE=" |