Frage

Ich habe eine Entschlüsselungsroutine in VB6. Ich möchte nun die gleiche Entschlüsselung in C #. Die Strings, die Entschlüsselung brauchen, sind in Unicode, so dass ich Encoding.Unicode.GetString die Eingabe in C # zu lesen. Der Eingang sieht nun genau die gleiche wie in VB6.

Die ersten Zeichen in der Schleife entschlüsselt ok! Ich begegne dann einen Unterschied ... Das Programm analysiert das Zeichen ‚~‘ mit einem anderen Index als in VB6.

Beim Debuggen ich folgend in VB und in .Net sehen:
VB6 ~ = Code 152
C # ~ = Code 732

Unnötig zu sagen, die Entschlüsselung fehlschlägt. Ich brauche oben genannten 152 für den Charakter zu erhalten.

Was ist hier falsch?

Grüße,

Michel

War es hilfreich?

Lösung

Ihre VB6 nicht Unicode lesen (I at Windows-1252-Codepage erraten würde), weshalb es mit einem anderen Zeichencode gekommen ist, zurück.

Andere Tipps

Was meinst du mit „Zeichen 152“ genau? Wie hast du diese Nummer?

Beachten Sie, dass „in Unicode“ zu sein, viele verschiedene Dinge bedeuten könnte. Sind Sie sicher, dass es als UTF-16 in den binären Daten codiert ist? Wenn Sie mehr über die Quelldaten veröffentlichen könnten, das wäre sehr hilfreich.

Auch die Verschlüsselung und Entschlüsselung sollte fast immer verwenden Bytes getan, nicht Zeichen. Während ich verstehe Sie Legacy-Verhalten reproduzieren müssen, sollten Sie versuchen, aus der Behandlung von Strings als undurchsichtige Binärdaten über die Zeit zu wandern weg.

Ich habe das schon mal gemacht. Das Problem ist in der Codierung. Wo .NET Unicode ist, ist VB6 Unifail.

Auf der .NET-Seite, müssen Sie Encoding.ASCII benutzen, um Ihre Strings in Byte-Arrays zu konvertieren und umgekehrt.

Encoding.ASCII.GetString(decrypted);
//and
Encoding.ASCII.GetBytes(cleartext);

Wenn Sie also an die VB App senden verschlüsseln, müssen Sie ASCII.GetBytes verwenden und dann das Byte-Array verschlüsseln, und wenn Sie ein Byte-Array von der VB Seite bekommen müssen Sie diese entschlüsseln und verwenden ASCII.GetString zu dekodieren die Bytes in eine nutzbare Zeichenfolge.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top