![]() |
Datenbank: Advantage • Version: 9.10 • Zugriff über: Advantage Komponeten
Sonderzeichen beim abspeichern in der DB funktioniert nicht
Hallo,
wir haben folgendes Problem: Ein verschlüsseltes Passwort soll in einem String-Feld in der Datenbank abgespeichert werden. In diesem Passwort sind bewusst auch Sonderzeichen enthalten (ASCII Bereich von 32 -255) Dieses Passwort wird nicht richtig in die Datenbank abgespeichert. Wir übergeben das Passwort einer Query und schreiben es in die Datenbank.
Delphi-Quellcode:
query.sql.text:='update Benutzer set passwort=:Ppass where LOGINname= :PNAME'; query.ParamByName('ppass').AsString := pass; query.ParamByName('Pname').AsString:= benutzer; Query.ExecSQL; Beim Debuggen können wir ja sehen, welches Passwort in die Datenbank geschrieben werden soll. Der Fehler betrifft nur einzelne Zeichen, z. B. tMdú• erhalten wir in der Entwicklungsumgebung tMdú• angezeigt. In der Datenbank wird das letzte Zeichen "•" als dicker Strich von oben nach unten dargestellt. Wenn wir die Daten aus der Datenbank in einen Editor kopieren, wird das Zeichen wieder als Punkt angezeigt. Wenn wir das gespeicherte Passwort dann beim nächsten Neustart gegen die Benutzereingabe überprüfen, wird das Zeichen falsch entschlüsselt. Wir verwenden Delphi 2010 und Windows 7. Das gleiche Programm funktoniert unter Delphi 7 und Windows XP. Was könnte das sein? |
Re: Sonderzeichen beim abspeichern in der DB funktioniert ni
Ich würde das Passwort an deiner Stelle mit Base16, Base32 oder Base64 kodieren und dekodieren.
Damit sind alle Probleme mit Zeichensatzumwandlungen durch Datenbanken umgangen. Ein weiterer Vorteil ist, dass du dann im Passwort alle Zeichen von 0 bis 255 benützen darfst. Funktionen zur Base16-Kodierung (was nix anderes ist als der gute alte Hexcode) findest du ![]() |
Re: Sonderzeichen beim abspeichern in der DB funktioniert ni
Zum einen ist der String unter D2010 kein Ansistring mehr sondern ein Widestring.
Wie Du schon so schön sagtest, die "Darstellung". Letztendlich ist es, egal wie ein Zeichen dargestellt wird, wenn es an der finalen Empfängerposition "richtig" interpretiert wird. Sobald du Daten hast, die interpretiert werden sollten/könnten , und char/string/text gehören ganz klar dazu, dann solltest Du sehr viel Abstand zu den entsprechenden Datentypen nehmen, und alles als array of Byte/Word.... behandeln. Es gibt DBS die aufgrund Ihrer Import- und Exportübersetzungstabellen einen sinnvollen Text zu Buchstabensalat verkrüppeln können. Auch dort solltest Du Dich informieren. Gruß K-H |
Re: Sonderzeichen beim abspeichern in der DB funktioniert ni
Zitat:
|
Re: Sonderzeichen beim abspeichern in der DB funktioniert ni
*Schäm*
ich kann nur bis 8 zählen. Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz