Domanda

ho una routine di decriptazione in VB6. Ora voglio lo stesso decrittazione in C #. Le stringhe che hanno bisogno di decifratura sono in Unicode, per cui uso Encoding.Unicode.GetString di leggere l'input in C #. L'ingresso ora appare esattamente lo stesso come in VB6.

I primi caratteri nel circuito siano decifrati ok! Poi ho incontrato una differenza ... Il programma analizza il carattere '~' con un indice diverso da quello in VB6.

Quando il debug vedo il seguente in VB ed in .Net:
VB6 ~ = codice 152
C # ~ = codice 732

Inutile dire che, decrittografia non riesce. Ho bisogno di ottenere 152 per il personaggio di cui sopra.

Che cosa c'è che non va qui?

Saluti,

Michel

È stato utile?

Soluzione

Il tuo VB6 non leggeva Unicode (direi in tabella codici di Windows-1252), che è per questo che è tornato con un codice di carattere diverso.

Altri suggerimenti

Che cosa si intende per "carattere 152" esattamente? Come hai avuto questo numero?

Si noti che essendo "in Unicode" potrebbe significare molte cose diverse. Sei sicuro che è codificato come UTF-16 in dati binari? Se si potesse inviare più sui dati di origine, che sarebbe molto utile.

Inoltre, la crittografia e la decrittografia dovrebbero quasi sempre essere fatto utilizzando byte, non caratteri. Pur comprendendo il necessario per riprodurre il comportamento legacy, si dovrebbe cercare di migrare lontano da trattare le stringhe come dati binari opachi nel corso del tempo.

ho fatto prima. Il problema è nella tua codifica. Dove NET è unicode, VB6 è Unifail.

Sul lato .NET, è necessario utilizzare Encoding.ASCII per convertire le stringhe in array di byte e viceversa.

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

Così, quando si sta cifrando inviare al VB app, è necessario utilizzare ASCII.GetBytes e quindi crittografare tale matrice di byte, e quando si ottiene un array di byte dal lato VB li devi decifrare e usare ASCII.GetString per decodificare i byte in una stringa utilizzabile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top