AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

AES128 entschlüsseln

Ein Thema von gmc616 · begonnen am 21. Apr 2020 · letzter Beitrag vom 22. Apr 2020
Antwort Antwort
Seite 1 von 2  1 2      
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#1

AES128 entschlüsseln

  Alt 21. Apr 2020, 10:13
Hallo Delphi-Gemeinde.

Ich muss AES128-Zeichenketten entschlüsseln.
Nun ist es aber so, dass ich von Verschlüsselungen überhaupt Ahnung habe.

Ich habe etwas rumgegoogled und eine Reihe von DCPcrypt Beispielen gefunden, aber keines bringt für mich das korrekte Ergebnis.
Ich stehe auf dem Schlauch.
Delphi-Quellcode:

  Key := '30F9FDB205E2821C1163C68B3CB542BE'; // Der Schlüssel
  Data := 'Hz6/lUsQU4i+E8f7O33cA1APEiu1SwAG'; // Die Zeichenkette , vermutlich base64, kommt aus XML
 
  Ergebnis := 'F5D0CC6A9B7FA0F9AE8324ED871B7509'; // <- Das soll raus kommen
Als Verschlüsselungsmethode habe ich das dazu gefunden: http://www.w3.org/2001/04/xmlenc#kw-aes128
Offenbar gibt es hier einen Key-Wrapper ... Den Algorithmus verstehe ich irgend wie nicht.

Leider habe ich momentan nicht die Zeit mich in dieses komplexe Thema "Verschlüsselung" einzuarbeiten (obwohl es sicherlich interessant wäre).
Diese Entschlüsselung ist nur ein kleiner Teil eines riesigen Projektes.
Daher hoffe ich auf eure Hilfe, dass ihr mir einen Schubs in die richtige Richtung geben könnt.

Danke im Voraus.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: AES128 entschlüsseln

  Alt 21. Apr 2020, 11:21
Hallo,
normales Aes128 ist es schon mal nicht, siehe hier

https://encode-decode.com/aes128-encrypt-online/

Merke: Es gibt verschiedene Aes128-Verschlüsselungen.

aes128-cfb liefert z.B. was (aber nicht Richtige)


Du musst dich wohl oder übel damit beschäftigen,
und wenn es erst mal darum geht, das korrekte Verschlüsselungsverfahren zu ermitteln.
Heiko
  Mit Zitat antworten Zitat
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: AES128 entschlüsseln

  Alt 21. Apr 2020, 12:41
Für Verschlüsselungen (und auch zum hashen) verwende ich immer das kostenlose Delphi Encryption Compendium. Einfach in ein Verzeichnis deiner Wahl extrahieren und es zum Delphi Bibliotheks-Pfad hinzufügen und schon kanns los gehen.

Beispiel:
Delphi-Quellcode:
uses
  DECCipher;

procedure TForm1.Button1Click(Sender: TObject);
const
  Salt = 'ABCDEF';
var
  Cipher: TDECCipher;
begin
  // Instanz erzeugen (Rijndael = AES 128)
  Cipher := TCipher_Rijndael.Create;
  try
    // Mit Passwort und Salt initialisieren
    // Die Salt-Konstante ist nur ein Beispiel!
    Cipher.Init(edtPassword.Text, Salt);

    // Den Wert aus dem Source-Edit verschlüsseln und
    // in Dest-Edit ausgeben.
    edtDest.Text := Cipher.EncodeBinary(edtSource.Text);

    // Entschlüsseln geht mit Cipher.DecodeBinary
    // Mit EncodeFile & DecodeFile kann eine Datei ver-/ent-schlüsselt werden
    // Mit EncodeStream & DecodeStream ein Stream...
  finally
    FreeAndNil(Cipher);
  end;
end;
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.824 Beiträge
 
Delphi 12 Athens
 
#4

AW: AES128 entschlüsseln

  Alt 21. Apr 2020, 19:00
Das gezeigte Delphi Encryption Compendium (DEC) Beispiel dürfte etwas veraltet sein.
Vermutlich passt es für V5.2, es gibt aber eine Entwicklungsversion der in Entwicklung
befindlichen V6.0.

Da wurden ein paar Methoden umbenannt und alles weiter modularisiert.
Außerdem kann diese Version durch Nutzung eines NO_ASM Compilerschalters auch auf
mobilen Plattformen benutzt werden. Es wurden für alle bisher in ASM geschriebene
Routinen Delphi Varianten geschrieben, die in dem Fall genutzt werden.

In V6.0 werden auch ein paar Beispiele mitgeliefert.

Der Hinweis darauf, dass es verschiedene AES Varianten gibt ist etwas unglücklich
formuliert. Was gemeint ist: AES verschlüsselt immer einzelne Datenblöcke.
Ist die Datenmenge größer als ein Block müssen mehrere verschlüsselt werden.
Um die Sicherheit zu erhöhen sollten dabei die Blöcke miteinander verkettet werden.
Und genau dafür gibt es verschiedene Verfahren, von denen DEC die meisten geläufigen
(leider noch kein GCM) beherrschen dürfte.

Außerdem gibt es in DEC Formatklassen für Datenformat Konvertierungen, z. B. auch
für BASE64.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: AES128 entschlüsseln

  Alt 21. Apr 2020, 19:28
Hallo,
Zitat:
Ist die Datenmenge größer als ein Block müssen mehrere verschlüsselt werden.
ja, das meinte ich und auch noch das:
Ist die Datenmenge kleiner als ein Block, wird der Block nach einem bestimmten (festzulegenden) Algorithmus aufgefüllt.
Und den muss man meines Wissens beim Entschlüsseln kennen.
Heiko
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: AES128 entschlüsseln

  Alt 22. Apr 2020, 10:50
Data muss zuerst einmal von Base64 in binäre Daten umgewandelt werden.
Erst dann kann der Algo zum entschlüsseln angewendet werden.
"Ergebnis" ist ein Hexdump der entschlüsselten Daten. Um die tatsächlich entschlüsselten Daten vergleichen zu können, muss man diese vorher umwandeln.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.824 Beiträge
 
Delphi 12 Athens
 
#7

AW: AES128 entschlüsseln

  Alt 22. Apr 2020, 13:38
Data muss zuerst einmal von Base64 in binäre Daten umgewandelt werden.
Erst dann kann der Algo zum entschlüsseln angewendet werden.
"Ergebnis" ist ein Hexdump der entschlüsselten Daten. Um die tatsächlich entschlüsselten Daten vergleichen zu können, muss man diese vorher umwandeln.
Das sollte mit den Format Klassen von DEC machbar sein.
Einfach mal anschauen, dafür gibt's auch Demoprogramme.
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: AES128 entschlüsseln

  Alt 22. Apr 2020, 14:26
Irgendwie komme ich nicht weiter.

Ich habe mir ein paar Sachen durchgelesen und das DEC getestet.
Immer wieder lese ich etwas von Salz (Salt) und InitVectoren. Oder ist das das gleiche?

Fest steht, ich habe beides nicht. Wüsste auch nicht woher ich die bekommen sollte.
Und ohne diese Dinge wird das mit dem Entschlüsseln wohl nichts werden.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: AES128 entschlüsseln

  Alt 22. Apr 2020, 14:48
Salt: Sowas wird nicht immer gemacht. (ob es hier der Fall ist ... keine Ahnung)

Das Versalzen kann man zu Beginn machen, oder hinten anhängen, aber zu Beginn (wie die InitVectoren) wird es wohl meistens am Besten sein.
Es geht nur darum, dass man bei gleichen zu verschlüsselnden Daten ein anderes Ergebnis bekommt, durch hinzufügen einer zusätzlichen "festen" (für diesen einen Zweck) oder einer dynamischen (nur fur diese EINE Verschlüsselung) Komponente oder Beides zusammen.

z.B. die Passwörter in so einem Forum:
* ein geheimer Schlüssel im Forum (damit jede Webseite einen Anderen hat)
* und nochmal pro User einen zufälligen Schlüssel, immer wieder neu, bei neuem Passwort (damit zwei Benutzer mit dem selben Passwort nicht den selben Passwort-Hash bekommen)

Der initiale Salt entspricht quasi dem InitVector.

Erstes wird quasi im Programm/Rechner hinterlegt
und Zweiteres wird jeweils in/an/neben den verschlüsselten Daten abgelegt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
jus

Registriert seit: 22. Jan 2005
343 Beiträge
 
Delphi 2007 Professional
 
#10

AW: AES128 entschlüsseln

  Alt 22. Apr 2020, 15:14
...
Der Hinweis darauf, dass es verschiedene AES Varianten gibt ist etwas unglücklich
formuliert. Was gemeint ist: AES verschlüsselt immer einzelne Datenblöcke.
Ist die Datenmenge größer als ein Block müssen mehrere verschlüsselt werden.
Um die Sicherheit zu erhöhen sollten dabei die Blöcke miteinander verkettet werden.
Und genau dafür gibt es verschiedene Verfahren, von denen DEC die meisten geläufigen
(leider noch kein GCM) beherrschen dürfte.
...
Meiner Meinung nach ist es, wie schon hoika und TurboMagic angedeutet haben, zunächst mal sehr wichtig rauszufinden, welche Betriebsart(Block Cipher Mode) für die Verschlüsselung verwendet wurde, sonst wird es ein herumgerate. Und danach könnte man die Sache mit IV angehen, wobei dieser normalerweise in der Doku angeben werden sollte.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz