У меня есть данные, которые шифруются и отправляются на другую страницу, где они декодируются и интерпретируются.
Данные хэшируются в Unicode с использованием System.Text.Encoding.Unicode.GetString (), затем шифруются, затем кодируются в строку Base64 и отправляются через URL, затем принимающий сайт извлекает это из Base64 и дешифрует его снова, и использует System.Text.Encoding.Unicode.GetBytes (), чтобы снова вернуться к байту.
Однако я получаю один символ, который не интерпретируется в байтах так же, как я его отправляю. Оно «появляется» так же, как « ». Эта строка затем расшифровывается в байты, но оценивается по-разному.
При кодировании символы Юникода занимают два байта - этот символ кодируется как эти байты:
[0]: 139
[1]: 222
но декодируется как
[0]: 253
[1]: 255
Все остальные символы должным образом преобразуются в и из шифрования, при этом их преобразования байтов остаются неизменными.
Является ли этот персонаж особым случаем? Есть ли другие персонажи, которые будут иметь такой же эффект? Что-то сломалось с шифрованием?