AGB  ·  Datenschutz  ·  Impressum  







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

C# zu Delphi mit DEC

Ein Thema von knuut21 · begonnen am 20. Aug 2022 · letzter Beitrag vom 31. Aug 2022
Antwort Antwort
knuut21

Registriert seit: 3. Mär 2010
Ort: Unna
21 Beiträge
 
RAD-Studio 2010 Ent
 
#1

C# zu Delphi mit DEC

  Alt 20. Aug 2022, 23:49
Hallo zusammen,

ich versuche gerade die Entschlüsselung eines Passworts aus C# in Delphi zu implementieren und stehe wohl auf dem Schlauch.

Ausgehend von C#:

public string Decrypt(string PWD, string Inputtext)
{
try
{
Rijndael AES_Decrypto = Rijndael.Create();
AES_Decrypto.BlockSize = 128;
AES_Decrypto.KeySize = 256;

Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(PWD, SALT, 2000);
AES_Decrypto.Key = pdb.GetBytes(32);
AES_Decrypto.IV = pdb.GetBytes(16);
..
..

Schaut mein Ansatz in Delphi so aus:

Delphi-Quellcode:
function Decrypt(PWD, InputText: String): string;
const
  lSALT: TBytes = [x, x, x, x, x, x, x, x];
begin
  Key:= THash_SHA1.PBKDF2(BytesOf(PWD), SALT, 2000, 32);
  IV:= THash_SHA1.PBKDF2(BytesOf(PWD), SALT, 2000, 16);
..
..
Leider erhalte ich für IV und Key unterschiedliche Werte und somit ist die Entschlüsselung des Passworts nicht erfolgreich.

Hat jemand eine Idee, was ich hier falsch mache?

Danke

Knuut21
  Mit Zitat antworten Zitat
TurboMagic

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

AW: C# zu Delphi mit DEC

  Alt 21. Aug 2022, 09:06
Hallo,

ich weiß jetzt zwar nicht was Rfc2898 genau beschreibt.
Ich würde aber mal zuerst überprüfen, ob für die 32 Byte beim selben Eingabewert wie in C#
dasselbe raus kommt.

Außerdem frage ich micht, warum du das 2x berechnest. Einmal für 32 Byte und 1x für 16 Byte.
Man kann es doch 1x für 32 Byte berechnen und dann einfach aus dem Ergebnis auch die 16 Byte
extrahieren oder?

Zumindest hinterläßt der C# diesen Eindruck bei mir.

Und nochwas wo man aufpassen muss: ist der string PWD in C# auch ein UTF16 string?
Sonst könnte BytesOf in Delphi ein anderes Ergebnis liefern...

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: C# zu Delphi mit DEC

  Alt 21. Aug 2022, 09:25
ist der string PWD in C# auch ein UTF16 string?
UTF-16 ist in C# ein Char. (Also auch ein String egal ob System.String oder nur String)
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
knuut21

Registriert seit: 3. Mär 2010
Ort: Unna
21 Beiträge
 
RAD-Studio 2010 Ent
 
#4

AW: C# zu Delphi mit DEC

  Alt 21. Aug 2022, 09:43
Ich muss zugeben, dass ich alles andere als Experte beim Thema Verschlüsselung etc. bin.

ich weiß jetzt zwar nicht was Rfc2898 genau beschreibt.
TurboMagic
Lt. Beschreibung von "MS" Implementiert die Klasse mithilfe eines auf HMACSHA1 basierenden Generators für Pseudozufallszahlen die kennwortbasierte Schlüsselableitungsfunktion PBKDF2.

Außerdem frage ich micht, warum du das 2x berechnest. Einmal für 32 Byte und 1x für 16 Byte.
Man kann es doch 1x für 32 Byte berechnen und dann einfach aus dem Ergebnis auch die 16 Byte
extrahieren oder?

TurboMagic
War anfänglich auch meine Annahme, aber sowohl in C#, als auch durch die Verwendung von THash_SHA1.PBKDF2 werden für unterschiedliche Schlüssellängen unterschiedliche Werte erzeugt.

In meinem Fall allerdings keine identischen für die jeweiligen Keys.

BG

knuut21
  Mit Zitat antworten Zitat
TurboMagic

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

AW: C# zu Delphi mit DEC

  Alt 22. Aug 2022, 21:51
Man müsste Mal prüfen wo DECs Unit Test Daten für den PBKDF2 her sind und was C# daraus macht bzw. ob der RFC Testdaten enthält und DEC die auch erfolgreich nutzen kann.
  Mit Zitat antworten Zitat
TurboMagic

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

AW: C# zu Delphi mit DEC

  Alt 22. Aug 2022, 21:54
Gibt's davon auch eine Variante in der DEC die komplett mit TBytes arbeitet? Kann man der Mal zum Vergleich die Daten des C# Strings in dessen UTF16 Repräsentation füttern?
  Mit Zitat antworten Zitat
knuut21

Registriert seit: 3. Mär 2010
Ort: Unna
21 Beiträge
 
RAD-Studio 2010 Ent
 
#7

AW: C# zu Delphi mit DEC

  Alt 30. Aug 2022, 22:20
So wie es ausschaut, scheint es einen Fehler in der Implementierung der Methode Hash_SHA1.PBKDF2 zu geben.
Bug-Ticket ist erstellt.
  Mit Zitat antworten Zitat
TurboMagic

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

AW: C# zu Delphi mit DEC

  Alt 30. Aug 2022, 22:36
Ja, Issue hab's ich gesehen. Wird aber ein bisschen dauern, es sei denn es findet sich jemand der PBKDF2 besser kann als ich

Ich erinnere mich noch, keine Ahnung ob das hier relevant ist, dass ich
damals rausgefunden hatte, dass DECs KDF2 eigentlich KDF1 oder 3 war.
Hatte das dann entsprechend umbenannt und die anderen beiden umgesetzt, da die Unterschiede nur in den Aufruf Reihenfolgen einiger darin aufgerufene Funktionen liegt.
  Mit Zitat antworten Zitat
knuut21

Registriert seit: 3. Mär 2010
Ort: Unna
21 Beiträge
 
RAD-Studio 2010 Ent
 
#9

AW: C# zu Delphi mit DEC

  Alt 31. Aug 2022, 08:25
Mir ist bei den Tests aufgefallen, dass scheinbar die ersten 16 Bytes korrekt erzeugt werden:

Ergebnis von THash_SHA1.PBKDF2('PassWord', 'Salt', 1000, 16):

(5, 231, 179, 63, 147, 234, 29, 53, 147, 155, 50, 173, 89, 148, 239, 99)

Ergebnis der Referenz- Bibliothek (https://onlinephp.io/hash-pbkdf2):, hier allerdings mit einer Länge von 32 (warum auch immer)

Hex: 05 e7 b3 3f 93 ea 1d 35 93 9b 32 ad 59 94 ef 63
entspricht (5 231 179 63 147 234 29 53 147 155 50 173 89 148 239 99)

Bei längeren Keys klappt es mit THash_SHA1.PBKDF2 nicht mehr.

@TurboMagic, Danke für Deine Unterstützung.
  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 05:32 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