AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Verschlüsslung AES_Decrypt
Thema durchsuchen
Ansicht
Themen-Optionen

Verschlüsslung AES_Decrypt

Ein Thema von Ykcim · begonnen am 19. Aug 2014 · letzter Beitrag vom 20. Aug 2014
Antwort Antwort
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#1

Verschlüsslung AES_Decrypt

  Alt 19. Aug 2014, 15:07
Datenbank: MySQL • Version: 5 • Zugriff über: UniDac
Hallo Zusammen,

ich habe eine Frage zum Verständnis bezgl. des Verschlüsselns von Datenfeldern.

Also ich möchte ein Datenfeld verschlüsseln und habe gelesen, dass ich dazu AES_ENCRYPT(STR, KEY_STR) verwenden kann.

Jetzt habe ich das ausprobiert und komme mit dem Ergebnis nicht zurecht:

Select AES_ENCRYPT('Hallo','abcd') Das ergibt den Wert: 'çòË¡)—)�' Ich war davon augegangen, dass ich diesen Wert mit AES_DECRYPT(CRYPT_STR,KEY_STR) wieder entschlüsseln kann.

Aber Select AES_DECRYPT('çòË¡)—)�','abcd') ergibt den Wert: NULL

Andererseits wenn ich folgendes teste, funktioniert es: Select AES_DECRYPT(AES_ENCRYPT('Hallo','abcd'),'abcd') . Das ergibt den Wert: Hallo .

Ich habe gedacht, dass diese komischen Zeichen nicht in der Eingabkonsole erkannt werden. Kann man die Art der verwendeten Zeichen auf alphanumerisch eingrenzen?
Ich habe es dann mal in einem kleinen Programm getestet und es hat auch nicht funktioniert.
Kann mir jemand sagen, was ich falsch mache?

Vielen Dank
Patrick
Patrick

Geändert von Ykcim (19. Aug 2014 um 15:40 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Verschlüsslung AES_Decrypt

  Alt 19. Aug 2014, 15:37
Select DECRYPT('çòË¡)—)�','abcd') oder
Select AES_DECRYPT('çòË¡)—)�','abcd') ?
Markus Kinzler
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#3

AW: Verschlüsslung AES_Decrypt

  Alt 19. Aug 2014, 15:39
Sorry!

Ich meinte AES_DECRYPT - war nur ein Schreibfehler in meinem Post.

Patrick
Patrick
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Verschlüsslung AES_Decrypt

  Alt 19. Aug 2014, 15:44
Ist das Feld auch groß genug?
Zitat von http://dev.mysql.com/doc/refman/5.1/de/encryption-functions.html:
Da AES als Algorithmus auf Blockebene arbeitet, werden Strings unterschiedlicher Länge bei der Verschlüsselung mit Füllzeichen erweitert. Die Länge des Ergebnis-Strings lässt sich mit folgender Formel berechnen:

16 × (trunc(string_length / 16) + 1)

Wenn AES_DECRYPT() ungültige Daten oder ein inkorrektes Auffüllen erkennt, gibt es NULL zurück.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.360 Beiträge
 
Delphi 12 Athens
 
#5

AW: Verschlüsslung AES_Decrypt

  Alt 19. Aug 2014, 15:45
Das Verschlüsselte/Komprimierte solcher Funktionen stellt (meistens) Binärdaten dar, also solltest du sie entweder in einem Binär-Feld/Blob speichern oder sie, nach dem Vershclüssel, gleich in HEX oder Base64 umwandeln, wenn du sie als Text behandeln willst.

Ich vermute mal, daß sich dein çòË¡)—)� irgendwo einen Umkodierungsfehler (Codepages) einfängt und damit geschrottet wurde.

PS: die Doku sagt
Zitat:
If AES_DECRYPT() detects invalid data or incorrect padding, it returns NULL.

http://dev.mysql.com/doc/refman/5.6/...on_from-base64
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (19. Aug 2014 um 15:50 Uhr)
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#6

AW: Verschlüsslung AES_Decrypt

  Alt 19. Aug 2014, 15:52
An diesem Gedanken habe ich gerade gearbeitet. Daher habe ich es nicht nur mit Einträgen versucht, sondern habe ein Fald als BLOB definiert und den Inhalt von AES_ENCRYPT da drin gespeichert.
Dann habe ich folgendes leider ohne Erfolg getestet:

Delphi-Quellcode:
Select CONVERT(passwort USING utf8 ) from hlp_login where user_id=1
union
Select AES_DECRYPT(passwort,'abcd') from hlp_login where user_id=1
und auch das ergab den Wert NULL:

Delphi-Quellcode:
Select CONVERT(passwort USING utf8 ) from hlp_login where user_id=1
union
Select AES_DECRYPT(CONVERT(passwort USING utf8 ),'abcd') from hlp_login where user_id=1
Die obere Select-Anweisung gibt mir den gespeicherten Wert korrekt zurück, nur die Entschlüsslung sagt immer NULL.

Gruß Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Verschlüsslung AES_Decrypt

  Alt 19. Aug 2014, 16:39
Edit: Hab mal wieder Unfung geschrieben.
Gruß
Cookie
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Verschlüsslung AES_Decrypt

  Alt 19. Aug 2014, 16:57
Das Problem wird schon bei der Verschlüsselung auftreten. Der erzeugte Wert ist zu kurz [ sollte 16 Zeichen lang sein: 16 * ( Trunc( 5/16)+1) ]. Im 1. Beitrag hat der aber nur 8 Zeichen
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:36 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