![]() |
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; |
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 |
Re: DEC <-> .Net Cryptohgraphy (Rijndael)
Im Moment verwende ich dazu das
![]() (Kann bei Bedarf auch das ZIP hier anhängen, falls du keinen Account bei CodeProject hast) |
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 |
Re: DEC <-> .Net Cryptohgraphy (Rijndael)
Mann ich sehe gerade
Zitat:
.Init('') ? Du benutzt kein Passwort ? Gruß Hagen |
Re: DEC <-> .Net Cryptohgraphy (Rijndael)
Zitat:
Zitat:
|
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!
|
Re: DEC <-> .Net Cryptohgraphy (Rijndael)
Zitat:
|
Re: DEC <-> .Net Cryptohgraphy (Rijndael)
Zitat:
|
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 |
Re: DEC <-> .Net Cryptohgraphy (Rijndael)
Zitat:
Und ob die verwendete Komponente auch wirklich einen Widestring direkte verwenden kann oder ihn nur wieder zurückwandelt ... |
Re: DEC <-> .Net Cryptohgraphy (Rijndael)
Hallo.
Stimmt. Ich ging mit dem #00 von purem ASCII (ANSI?) aus. Die Umwandlung String -> WideString müsste dann eben mit der Codepage geschehen. Ich hatte mich ja mal langvirig mit dem Problem auseinander gesetzt, einen WideString mit DEC zu verschlüsseln. Das Ergebnis ist hier: ![]() Bitte schreibe uns, ob du einen mit DEC verschlüsselten WideString nun mit der .NET Assembly korrekt entschlüsseln kannst. Gruß blackdrake |
Re: DEC <-> .Net Cryptohgraphy (Rijndael)
Zitat:
|
Re: DEC <-> .Net Cryptohgraphy (Rijndael)
Zitat:
Aber mit deiner Erweiterung von DEC sind zumindest schonmal die Verschlüsselten Strings gleich lang, dann kann es jetzt eigentlich nur noch am Key oder IV liegen damit es funktioniert, ich melde mich, sobald es was neues gibt. |
Re: DEC <-> .Net Cryptohgraphy (Rijndael)
Der Key und IV können nicht direkt als WideStrings benutzt werden, das sind immer Array of Byte. Das ist einfach eine Frage des Algorithmus und die arbeiten mit binären Daten. Falls also zb. eine Bibliothek ein zb. 16 Zeichen Passwort als Widestring dem Cipher übergibt dann würde man real ein 32 Bytes Passwort benutzen das an jeder 2. Stelle eine 0 enthielte. Sicherheitstechnisch betrachtet wäre dies grob fahrlässig da so die Sicherheit drastisch reduziert würde.
Ich denke aber mich dunkel erinnern zu können das .NET im Grunde 1 zu 1 kompatibel mit DEC ist, bis eben auf den Punkt das die Daten die man verschlüsseln will als expandierte WideStrings verschlüsselt werden. Bei den Schlüsseln und IV's ist dies aber nicht der Fall. Gruß hagen |
Re: DEC <-> .Net Cryptohgraphy (Rijndael)
Evtl. liegt es auch an den Padding's, die man zumindest bei den .NET Funktionen einstellen kann.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 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