Demo aes crypto
Version vom 6. Dezember 2025, 11:00 Uhr von Thomas.will (Diskussion | Beiträge)
Demo AES Crypto (PowerShell)
Schlüssel und IV erzeugen
- erzeugt ein leeres Byte-Array mit 32 Bytes für den AES-Schlüssel
- $key = New-Object byte[] 32
- füllt den Schlüssel mit kryptografisch sicheren Zufallswerten
- [Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($key)
- erzeugt ein leeres Byte-Array mit 16 Bytes für den Initialisierungsvektor (IV)
- $iv = New-Object byte[] 16
- füllt den IV mit kryptografisch sicheren Zufallswerten
- [Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($iv)
Klartext definieren
- legt den zu verschlüsselnden Klartext fest
- $plaintext = "Dies ist eine AES-Testnachricht."
AES-Objekt erzeugen
- erzeugt das AES-Objekt und konfiguriert Modus und Padding
- $aes = [System.Security.Cryptography.Aes]::Create()
- $aes.Key = $key
- $aes.IV = $iv
- $aes.Mode = "CBC"
- $aes.Padding = "PKCS7"
Verschlüsseln
- erzeugt den Verschlüsseler
- $encryptor = $aes.CreateEncryptor()
- wandelt den Klartext in Bytes um
- $bytes = [System.Text.Encoding]::UTF8.GetBytes($plaintext)
- verschlüsselt die Bytes
- $cipher = $encryptor.TransformFinalBlock($bytes, 0, $bytes.Length)
Ergebnis als Base64 anzeigen
- wandelt die verschlüsselten Bytes nach Base64 um
- $cipher_b64 = [Convert]::ToBase64String($cipher)
- zeigt den verschlüsselten Text an
- $cipher_b64
AES für Entschlüsselung neu erstellen
- neues AES-Objekt mit gleichem Schlüssel und IV
- $aes2 = [System.Security.Cryptography.Aes]::Create()
- $aes2.Key = $key
- $aes2.IV = $iv
- $aes2.Mode = "CBC"
- $aes2.Padding = "PKCS7"
Entschlüsseln
- erzeugt den Entschlüsseler
- $decryptor = $aes2.CreateDecryptor()
- wandelt den Base64-Text wieder in Bytes um
- $cipher_bytes = [Convert]::FromBase64String($cipher_b64)
- entschlüsselt die Daten
- $plain_bytes = $decryptor.TransformFinalBlock($cipher_bytes, 0, $cipher_bytes.Length)
- wandelt die Bytes zurück zu UTF8-Text
- $plain = [System.Text.Encoding]::UTF8.GetString($plain_bytes)
- zeigt den entschlüsselten Text
- $plain