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]:…“)
 
 
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