Вопрос

У меня есть процедура дешифрования в VB6.Теперь я хочу такую же расшифровку в C #.Строки, требующие расшифровки, находятся в юникоде, поэтому я использую кодировку.Юникод.getString для чтения входных данных в C #.Входные данные теперь выглядят точно так же, как в VB6.

Первые несколько символов в цикле расшифровываются нормально!Затем я сталкиваюсь с разницей...Программа анализирует символ " с другим индексом, чем в VB6.

При отладке я вижу следующее в VB и в .Net:
VB6 = код 152
C # = код 732

Излишне говорить, что расшифровка завершается неудачей.Мне нужно получить 152 для персонажа, упомянутого выше.

Что здесь не так?

С уважением,

Мишель

Это было полезно?

Решение

Ваш VB6 не читал Unicode (я бы предположил, что на кодовой странице Windows-1252), поэтому он возвращается с другим символьным кодом.

Другие советы

Что именно вы подразумеваете под "символом 152"?Откуда у вас этот номер?

Обратите внимание, что быть "в Юникоде" может означать много разных вещей.Вы уверены, что в двоичных данных он закодирован как UTF-16?Если бы вы могли опубликовать больше информации об исходных данных, это было бы очень полезно.

Кроме того, шифрование и дешифрование должны почти всегда должно быть выполнено с использованием байтов, а не символов.Хотя я понимаю, что вам нужно воспроизвести устаревшее поведение, вам следует попытаться со временем отказаться от обработки строк как непрозрачных двоичных данных.

Я уже делал это раньше.Проблема в вашей кодировке.Где .NET - это unicode, VB6 - это Unifail.

На стороне .NET вам необходимо использовать кодировку.ASCII для преобразования ваших строк в массивы байтов и наоборот.

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

Итак, когда вы выполняете шифрование для отправки в приложение VB, вы должны использовать ASCII.Получите байты, а затем зашифруйте этот массив байтов, и когда вы получите массив байтов со стороны VB, вы должны расшифровать их и использовать ASCII.getString для декодирования байтов в полезную строку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top