ich bin etwas neu in Python (3 Monate) und habe folgendes Problem.
Ausgangsstellung
Ich versuche eine SQL Datenbank auszulesen und diese via AES zu verschlüsseln.
Das Auslesen funktioniert ohne Probleme.
Selbst das verschlüsseln und entschlüsseln der Datenbank funktioniert.
Das Problem ist, wenn ich ein einzelnes Element aus der Datenbank entnehme, kann ich dieses nicht entschlüsseln.
Hier mein Code:
Code: Alles auswählen
from Crypto import Random
from Crypto.Cipher import AES
from SQL_Funktionen import *
def Liste_verschlüsseln(Liste,Key):
obj = AES.new(Key, AES.MODE_CBC, 'This is an IV456')
Verschlüsselt = [0] * len(Liste)
for i in range(len(Liste)):
Verschlüsselt [i] = obj.encrypt(Anpassen(Liste[i]))
#Anpassen füllt den String mit Füllzeichen auf (bis 16 oder 32)
return Verschlüsselt
def Liste_entschlüsseln(Liste,Key):
obj = AES.new(Key, AES.MODE_CBC, 'This is an IV456')
Entschlüsselt = [0] * len(Liste)
for i in range(len(Liste)):
Entschlüsselt [i] = obj.decrypt(Liste[i])
Entschlüsselt [i] = Aufbereiten(Entschlüsselt [i])
#Entschlüsselt entfernt die Füllzeichen
return Entschlüsselt
def Datenbank_verschlüsseln(Datenbank,key):
Datenbank = Tupel_to_List(Datenbank)
Datenbank_verschlüsselt = [0] * len(Datenbank)
for i in range(len(Datenbank_verschlüsselt)):
Datenbank_verschlüsselt[i] = Liste_verschlüsseln(Datenbank[i],key)
return Datenbank_verschlüsselt
def Datenbank_entschlüsseln(Datenbank,key):
Datenbank_entschlüsselt = [0] * len(Datenbank)
for i in range(len(Datenbank_entschlüsselt)):
Datenbank_entschlüsselt[i] = Liste_entschlüsseln(Datenbank[i],key)
return Datenbank_entschlüsselt
def Element_entschlüsseln(Element,Key):
obj = AES.new(Key, AES.MODE_CBC, 'This is an IV456')
Element = obj.decrypt(Element)
return Element
key = "This is a key123"
db=DB()
Datenbank = db.user_ausgeben()
#Datenbank verschlüsseln -- funktioniert
Verschlüsselt = Datenbank_verschlüsseln(Datenbank,key)
#Element entnehmen und entschlüsseln -- funktioniert nicht
x = Element_entschlüsseln(Verschlüsselt[0][1],key)
#Datenbank entschlüsseln -- funktioniert
Entschli = Datenbank_entschlüsseln(Verschlüsselt,key)
Code: Alles auswählen
>>> x
b'=X\xeb\xd9y\xb2\x073\x84\xed\x9f\xca\x0c\xbe\xc0\x1d'
Code: Alles auswählen
obj8 = AES.new(key, AES.MODE_CBC, 'This is an IV456')
String = "The answer is no"
String = Anpassen(String)
print(String)
Geheim = obj8.encrypt(String)
print(Geheim)
print(type(Geheim))
obj9 = AES.new(key, AES.MODE_CBC, 'This is an IV456')
Nicht_Geheim = obj9.decrypt(Geheim)
Nicht_Geheim = Aufbereiten(Nicht_Geheim)
print(Nicht_Geheim)
print(type(Nicht_Geheim))
Code: Alles auswählen
The answer is no
b'\xd6\x83\x8dd!VT\x92\xaa`A\x05\xe0\x9b\x8b\xf1'
<class 'bytes'>
The answer is no
<class 'str'>
Ich wünsche noch einen schönen Abend
Gruß
Windo