Demo aes crypto

Aus Xinux Wiki
Version vom 6. Dezember 2025, 11:00 Uhr von Thomas.will (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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