HSL 2.0-Framework  1.9
Beschreibung des Frameworks
Öffentliche Methoden | Öffentliche, statische Methoden | Aufstellung aller Elemente
hsl20_2_crypto.hsl20_2_crypto.AESCipher Klassenreferenz

Klasse zur Verschlüssung von Daten mittels AES. Mehr ...

Öffentliche Methoden

def __init__ (self)
 Konstruktor. Mehr ...
 
def init (self, key, iv=None)
 Initialisieren. Mehr ...
 
def use_ecb (self)
 Verwendet zur Verschlüsselung den Modus ECB (Electronic Code Book) Mehr ...
 
def use_cbc (self)
 Verwendet zur Verschlüsselung den Modus CBC (Cipher-Block Chaining)
 
def use_cfb (self)
 Verwendet zur Verschlüsselung den Modus CFB (Cipher FeedBack)
 
def use_ofb (self)
 Verwendet zur Verschlüsselung den Modus OFB (Output FeedBack)
 
def use_ctr (self)
 Verwendet zur Verschlüsselung den Modus CTR (Counter Mode)
 
def encrypt (self, data)
 Verschlüsselt den übergebenen Datenblock. Mehr ...
 
def decrypt (self, data)
 Entschlüsselt den übergebenen Datenblock. Mehr ...
 

Öffentliche, statische Methoden

def generate_init_vector ()
 Generiert einen 16 Zeichen langen String. Mehr ...
 

Ausführliche Beschreibung

Klasse zur Verschlüssung von Daten mittels AES.

Teil des Pakets zur Verschlüsselung.

Die Methoden encrypt (verschlüsseln) und decrypt (entschlüsseln) dienen dazu, ganze Strings zu verarbeiten. Standardmäßig wird CBC (Cipher-Block Chaining) verwendet.

1 class Crypto_AES(hsl20_2.BaseModule):
2 
3  def __init__(self, homeserver_context):
4  ....
5  #################################################
6 
7  def on_input_value(self, index, value):
8  if index == self.PIN_I_DO_CRYPTO:
9  data = "val_with_16_char"
10  vector = "abcdefghijklmnop"
11 
12  aes_1 = self.FRAMEWORK.create_aes()
13  aes_1.init("key_with_16_char", vector)
14  aes_1.use_cbc()
15  encrypted = aes_1.encrypt(data)
16 
17  aes_2 = self.FRAMEWORK.create_aes()
18  aes_2.init("key_with_16_char", vector)
19  aes_2.use_cbc()
20  decrypted = aes_2.decrypt(encrypted)

Trifft auf dem Eingang PIN_I_DO_CRYPTO ein Telegramm ein, wird der Datenblock data mit dem statischen Vektor vector verschlüsselt (aes_1) und in der Variablen encrypted gespeichert.
Der verschlüsselte Datenblock encrypted wird mit demselben Vektor anschließend wieder entschlüsselt (aes_2) und in der Variablen decrypted gespeichert.
In beiden Fällen wird die Methode CBC verwendet.

Zu beachten
Die Datenblöcke decrypted und data sind identisch!
Zum ver- und entschlüsseln kann nicht das selbe AES-Objekt verwendet werden!
Änderungen V1.9:
Namespace 'hsl20_1' umbenannt in 'hsl20_2'

Beschreibung der Konstruktoren und Destruktoren

def hsl20_2_crypto.hsl20_2_crypto.AESCipher.__init__ (   self)

Konstruktor.

Warnung
Diese Klasse sollte nicht direkt instanziert werden.

Dokumentation der Elementfunktionen

def hsl20_2_crypto.hsl20_2_crypto.AESCipher.decrypt (   self,
  data 
)

Entschlüsselt den übergebenen Datenblock.

Zu beachten
Es muss stets das komplette zu verschlüsselnde Datenpaket übergeben werden: decrypt(a)+decrypt(b) != decrypt(a+b)
Je nach Modus muss das übergebene Datenpaket ein Vielfaches der Blockgröße sein.
Parameter
datastring
Datenblock
Ausnahmebehandlung
AttributeError
  • Wird ausgelöst, wenn...
  • ...kein Schlüssel angegeben wurde
  • ...der Schlüssel eine ungültige Länge besitzt
  • ...ein Init-Vektor angegeben wurde, der nicht 16 Zeichen lang ist
ValueError
  • Wird ausgelöst, wenn...
  • ...die Größe des Datenpakets nicht korrekt ist
def hsl20_2_crypto.hsl20_2_crypto.AESCipher.encrypt (   self,
  data 
)

Verschlüsselt den übergebenen Datenblock.

Es muss das gesamte zu verschlüsselnde Paket übergeben werden.

Zu beachten
Es muss stets das komplette zu verschlüsselnde Datenpaket übergeben werden: encrypt(a)+encrypt(b) != encrypt(a+b)
Je nach Modus muss das übergebene Datenpaket ein Vielfaches der Blockgröße sein.
Parameter
datastring
Datenblock
Ausnahmebehandlung
AttributeError
  • Wird ausgelöst, wenn...
  • ...kein Schlüssel angegeben wurde
  • ...der Schlüssel eine ungültige Länge besitzt
  • ...ein Init-Vektor angegeben wurde, der nicht 16 Zeichen lang ist
ValueError
  • Wird ausgelöst, wenn...
  • ...die Größe des Datenpakets nicht korrekt ist
def hsl20_2_crypto.hsl20_2_crypto.AESCipher.generate_init_vector ( )
static

Generiert einen 16 Zeichen langen String.

Dieser kann als Init-Vektor verwendet werden.

Rückgabe
string
Init-Vektor
def hsl20_2_crypto.hsl20_2_crypto.AESCipher.init (   self,
  key,
  iv = None 
)

Initialisieren.

Parameter
keystring
Schlüssel. Muss die Länge 16, 24 oder 32 haben.
ivstring
Optional. Init-Vektor, muss 16 Zeichen lang sein.
def hsl20_2_crypto.hsl20_2_crypto.AESCipher.use_ecb (   self)

Verwendet zur Verschlüsselung den Modus ECB (Electronic Code Book)

Zu beachten
Diese Methode benötigt keinen Init-Vektor!

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei: