Demo aes crypto: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Die Seite wurde neu angelegt: „= Demo AES Crypto (PowerShell) = = Schlüssel und Initialisierungsvektor erzeugen = $key = New-Object byte[] 32 [Security.Cryptography.RandomNumberGenerator]:…“
 
Keine Bearbeitungszusammenfassung
 
Zeile 1: Zeile 1:
= Demo AES Crypto (PowerShell) =
= Demo AES Crypto (PowerShell) =


= Schlüssel und Initialisierungsvektor erzeugen =
= Schlüssel und IV erzeugen =
$key = New-Object byte[] 32
; erzeugt ein leeres Byte-Array mit 32 Bytes für den AES-Schlüssel
[Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($key)
* $key = New-Object byte[] 32
; füllt den Schlüssel mit kryptografisch sicheren Zufallswerten
* [Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($key)


$iv = New-Object byte[] 16
; erzeugt ein leeres Byte-Array mit 16 Bytes für den Initialisierungsvektor (IV)
[Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($iv)
* $iv = New-Object byte[] 16
; füllt den IV mit kryptografisch sicheren Zufallswerten
* [Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($iv)


= Klartext definieren =
= Klartext definieren =
$plaintext = "Dies ist eine AES-Testnachricht."
; legt den zu verschlüsselnden Klartext fest
* $plaintext = "Dies ist eine AES-Testnachricht."


= AES-Objekt erzeugen und konfigurieren =
= AES-Objekt erzeugen =
$aes = [System.Security.Cryptography.Aes]::Create()
; erzeugt das AES-Objekt und konfiguriert Modus und Padding
$aes.Key = $key
* $aes = [System.Security.Cryptography.Aes]::Create()
$aes.IV  = $iv
* $aes.Key = $key
$aes.Mode = "CBC"
* $aes.IV  = $iv
$aes.Padding = "PKCS7"
* $aes.Mode = "CBC"
* $aes.Padding = "PKCS7"


= Verschlüsseln =
= Verschlüsseln =
$encryptor = $aes.CreateEncryptor()
; erzeugt den Verschlüsseler
$bytes = [System.Text.Encoding]::UTF8.GetBytes($plaintext)
* $encryptor = $aes.CreateEncryptor()
$cipher = $encryptor.TransformFinalBlock($bytes, 0, $bytes.Length)
; wandelt den Klartext in Bytes um
* $bytes = [System.Text.Encoding]::UTF8.GetBytes($plaintext)
; verschlüsselt die Bytes
* $cipher = $encryptor.TransformFinalBlock($bytes, 0, $bytes.Length)


= Verschlüsseltes Ergebnis in Base64 ausgeben =
= Ergebnis als Base64 anzeigen =
$cipher_b64 = [Convert]::ToBase64String($cipher)
; wandelt die verschlüsselten Bytes nach Base64 um
$cipher_b64
* $cipher_b64 = [Convert]::ToBase64String($cipher)
; zeigt den verschlüsselten Text an
* $cipher_b64


= AES zur Entschlüsselung neu erstellen =
= AES für Entschlüsselung neu erstellen =
$aes2 = [System.Security.Cryptography.Aes]::Create()
; neues AES-Objekt mit gleichem Schlüssel und IV
$aes2.Key = $key
* $aes2 = [System.Security.Cryptography.Aes]::Create()
$aes2.IV  = $iv
* $aes2.Key = $key
$aes2.Mode = "CBC"
* $aes2.IV  = $iv
$aes2.Padding = "PKCS7"
* $aes2.Mode = "CBC"
* $aes2.Padding = "PKCS7"


= Entschlüsseln =
= Entschlüsseln =
$decryptor = $aes2.CreateDecryptor()
; erzeugt den Entschlüsseler
$cipher_bytes = [Convert]::FromBase64String($cipher_b64)
* $decryptor = $aes2.CreateDecryptor()
; wandelt den Base64-Text wieder in Bytes um
* $cipher_bytes = [Convert]::FromBase64String($cipher_b64)


$plain_bytes = $decryptor.TransformFinalBlock($cipher_bytes, 0, $cipher_bytes.Length)
; entschlüsselt die Daten
$plain = [System.Text.Encoding]::UTF8.GetString($plain_bytes)
* $plain_bytes = $decryptor.TransformFinalBlock($cipher_bytes, 0, $cipher_bytes.Length)
$plain
; wandelt die Bytes zurück zu UTF8-Text
* $plain = [System.Text.Encoding]::UTF8.GetString($plain_bytes)
; zeigt den entschlüsselten Text
* $plain

Aktuelle Version vom 6. Dezember 2025, 11:00 Uhr

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