Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DEC <-> .Net Cryptohgraphy (Rijndael) (https://www.delphipraxis.net/100473-dec-net-cryptohgraphy-rijndael.html)

dfried 28. Sep 2007 20:46


DEC <-> .Net Cryptohgraphy (Rijndael)
 
Hallo,

ich habe in Delphi eine Routine um einen String zu Verschlüsseln mit DEC und Rijndael. Nun soll dieser Text über ein .Net Programm wieder entschlüsselt werden mit den .Net-Cryptography Klassen, aber irgendwie haut das überhaupt nicht hin.

Welche Parameter müssten bei DEC bzw. .Net eingestellt werden, damit ich den dort erzeugten Verschlüsselten String wieder über das .Net-Programm entschlüsseln kann?

Hab es derzeit probiert mit dem Mode cmCBCx und dem Format TFormat_MIME64 als Rückgabeformat der Funktion EncodeBinary.

Delphi-Quellcode:
  with TCipher_Rijndael.Create do
  try
    Mode := cmCBCx;
    Init('');
    OutputStr := EncodeBinary(InputStr, TFormat_MIME64);
  finally
    Free;
  end;

negaH 28. Sep 2007 21:04

Re: DEC <-> .Net Cryptohgraphy (Rijndael)
 
Wie wird den im .NET der AES benutzt ? Also welche Einstellungen und Parameter ?

Die Sache ist nämlich das der AES-Rijndael im DEC mit offiziellen Testvektoren verifiziert ist, der ist also richtig.

Gruß Hagen

dfried 28. Sep 2007 21:15

Re: DEC <-> .Net Cryptohgraphy (Rijndael)
 
Im Moment verwende ich dazu das Assembly hier.
(Kann bei Bedarf auch das ZIP hier anhängen, falls du keinen Account bei CodeProject hast)

negaH 29. Sep 2007 06:40

Re: DEC <-> .Net Cryptohgraphy (Rijndael)
 
Und welche Parameter werden benutzt ? Solange man nicht die Parameter kennt, also

- Schlüsselgröße für AES
- Umwandlungsfunktion des Passwortes in einen Sessionkey, falls verwendet
- Ciphermode, wie CBC oder ECB usw.
- verwendete Textformate um binäre Daten darzustellen

macht ein Vergleich keinen Sinn. Dieses abzugleichen ist ja gerade die Kunst des Programmierers der verschiedene Systeme zusammenführen möchte. Entscheidend ist das er Entwickler der Systembibliothek, also im Falle vom DEC meine Person, oder im Falle des Assemblies dessen Programmierer, die nötigen Parameter Standardkonform implementiert und dokumentiert haben. Also im DEC stellst du zb. den CipherMode aud CBC, alles Standard, verschlüsselst damit die Daten und wandelst sie per INet MIME Base64 Standard in lesbaren Text um. Jetzt musst du halt in Erfahrung bringen nach welchem Standard dieses Assembly arbeitet.

Gruß Hagen

negaH 29. Sep 2007 06:46

Re: DEC <-> .Net Cryptohgraphy (Rijndael)
 
Mann ich sehe gerade

Zitat:

Delphi-Quellcode:
with TCipher_Rijndael.Create do
  try
    Mode := cmCBCx;
    Init('');
    OutputStr := EncodeBinary(InputStr, TFormat_MIME64);
  finally
    Free;
  end;


.Init('') ? Du benutzt kein Passwort ?

Gruß Hagen

dfried 29. Sep 2007 07:44

Re: DEC <-> .Net Cryptohgraphy (Rijndael)
 
Zitat:

Zitat von negaH
- Schlüsselgröße für AES
- Umwandlungsfunktion des Passwortes in einen Sessionkey, falls verwendet
- Ciphermode, wie CBC oder ECB usw.
- verwendete Textformate um binäre Daten darzustellen

Ich werd mir das Assembly mal diesbezgl. genauer ansehen, zumindest laut MSDN ist der Ciphermode standardmässig CBC, die Schlüsselgröße 256bit und das Textformat Base64.

Zitat:

Zitat von negaH
.Init('') ? Du benutzt kein Passwort ?

Für den ersten Test nicht, ist das wichtig (bestimmt das vielleicht die Schlüssellänge)?

Bernhard Geyer 29. Sep 2007 07:53

Re: DEC <-> .Net Cryptohgraphy (Rijndael)
 
Evtl. könnt es auch daran liegen das der default-Character unter Delphi 1 Byte groß ist und unter .NET 2 Byte!

dfried 29. Sep 2007 10:35

Re: DEC <-> .Net Cryptohgraphy (Rijndael)
 
Zitat:

Zitat von Bernhard Geyer
Evtl. könnt es auch daran liegen das der default-Character unter Delphi 1 Byte groß ist und unter .NET 2 Byte!

Du meinst, ich sollte unter .Net den String zuerst noch von UTF8 in einen SingleByte Zeichensatz umwandeln bevor ih Ihn verschlüssle?

Bernhard Geyer 29. Sep 2007 10:45

Re: DEC <-> .Net Cryptohgraphy (Rijndael)
 
Zitat:

Zitat von dfried
Zitat:

Zitat von Bernhard Geyer
Evtl. könnt es auch daran liegen das der default-Character unter Delphi 1 Byte groß ist und unter .NET 2 Byte!

Du meinst, ich sollte unter .Net den String zuerst noch von UTF8 in einen SingleByte Zeichensatz umwandeln bevor ih Ihn verschlüssle?

Ich meine primär das du diesen unterschied berücksichtigen solltest. Ob du nun die Delphi-Seite anpaßt um mit Widestrings zu arbeiten oder anpassungen auf der .NET-Seite vornimmst sei dir überlassen.

blackdrake 1. Okt 2007 10:32

Re: DEC <-> .Net Cryptohgraphy (Rijndael)
 
Hallo.

Hat sich das Problem eigentlich gelöst? Sofern es wirklich nur die WideString-Auffassung ist, kannst du es in Delphi einfach mit WideString('test') realisieren. Die Funktion WideString müsste die Chars in WideChars umwandeln (ein #00 wird nach jedem Byte hinzugefügt).

Gruß
blackdrake


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:47 Uhr.
Seite 1 von 2  1 2      

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