Verschlüsselung QByteArray and sqlite BLOB
-
Ich schreibe momentan ein kleines Programm um Text verschlüsselt in einer Datenbank zu speichern. Mein Problem was ich damit hatte habe ich nun lösen können, aber ich verstehe momentan nicht so ganz das Ergebnis.
Ich benutze eine kleine Bibliothek zum verschlüsseln die als Input einen QByteArray verlangt. Eigentlich schade, aber das ist ja kein Problem. Ich wandle meinen QString einfach in ein QByteArray um und übergebe ihn der Klasse die ihn verschlüsseln soll. Diese reicht das an die Datenbankklasse die das Ergebnis aus encrypt als QByteArray in die Datenbank speichert. Dazu habe ich als Datentyp fürs Feld in sqlite einfach BLOB genommen.
Wenn ich nun als verschlüssenden Text "Test" angebe, schreibt er mir folgendes in die Datenbank.
171,247,105,250,157,78,68,250,167,163,207,242,155,46,98,120,188,112,246,182,148,49,197,235,86,57,187,85,101,97,72,166
Ist das typisch für einen QByteArray und ein BLOB Feld? Das ist nun der verschlüsselte Text in einem BLOB Feld gespeichert als QByteArray?
-
Glückwunsch zu deinem hundertsten Beitrag!
Dein Problem beschreibst du aber sehr abstrakt. Natürlich hat es nichts mit QByteArray oder Blob zu tun. Wenn du "Test" in ein QByteArray umwandelst, solltest du in UTF8 auch vier Byte rausbekommen. Und die sollten auch als 4 Byte in dem Blob Feld gespeichert werden.
Es ist viel wahrscheinlicher, dass die Verschlüsselungsroutine mit Blöcken fester Länge arbeitet, aber darüber schreibst du ja nichts.
-
Mich interessiert halt mehr wie dieser Wert in der Datenbank zustande kommt. Zur Verschlüssleung habe ich das hier benutzt https://bbs.archlinux.org/viewtopic.php?id=173884. Weiter unten ist eine aktuellere Version der Klasse.
-
Bennisen schrieb:
Mich interessiert halt mehr wie dieser Wert in der Datenbank zustande kommt.
Und was heißt das jetzt?
AES sollte mit 8 Byte Blöcken arbeiten, wenn ich mich recht erinnere. Das sind 32 Byte, also das Vierfache. Vielleicht ein Header oder eine Mindestgröße.
-
also heißt das, dass der erste Byte aus 171 Zeichen und der zweite aus 247 Zeichen besteht?
-
Nein. Das erste Byte ist das Byte mit dem Wert 171. Steht doch da!
-
SG1 schrieb:
Nein. Das erste Byte ist das Byte mit dem Wert 171. Steht doch da!
was bedeutet der Wert 171? Ich hab schonmal verschlüsselten Text gesehen und der sieht halt völlig anders aus als das was ich in dem Feld habe. Daher Frage ich mich was diese einzelnen Werte genau bedeuten. Ich weiß es halt nicht. Deswegen frage ich ja.
-
Nichts. Was soll es schon bedeuten? Ist doch grad Sinn der Verschlüsselung, dass möglichst zufällige Werte rauskommen, mit denen man nichts anfangen kann.
-
verstehe ich nicht ganz, aber nagut, dann muss ich mich wohl ein bisschen damit auseinander setzen. bin aber froh das es erstmal funktioniert. kann texte verschlüsseln und entschlüsseln