Является ли идея, что вы хотите перейти от строки открытого текста к зашифрованной строке? Если это так, используйте кодировку, поддерживающую весь диапазон Unicode, для преобразования из открытого текста в двоичные данные и base64 для преобразования из зашифрованного двоичного файла в «безопасный» зашифрованный текст.
Итак, шаги конвейера:
Шифрование
Преобразование открытого текста (строки) в открытый текст (байты) - например,
byte[] plainBinary = Encoding.UTF8.GetBytes(plainText);
Шифрование обычным способом с помощью DESCryptoServiceProvider
(plainBinary
до encryptedBinary
)
Преобразование зашифрованного двоичного файла в зашифрованный текст:
string encryptedText = Convert.ToBase64String(encryptedBinary);
дешифрование:
Преобразование зашифрованного текста в зашифрованный двоичный файл:
byte[] encryptedBinary = Convert.FromBase64String(encryptedText);
Расшифровывать обычным способом (encryptedBinary
до plainBinary
)
Преобразовать обычный двоичный файл в простой текст:
string plainText = Encoding.UTF8.GetString(plainBinary);
В качестве альтернативы, вы можете передать данные, используя StreamWriter
(для преобразования текста в двоичные файлы), CryptoStream
(для шифрования DES) и ToBase64Transform
, оставляя только преобразование (используя Encoding.ASCII
, для пример) зашифрованных и base64-закодированных данных в конце. Затем вы бы изменили процесс, используя FromBase64Transform
.
Если base64 недостаточно для ограничения создаваемых символов, вы всегда можете написать собственное преобразование в стиле base64 - все, что занимает произвольные байты и производит текст, который можно декодировать обратно в эти байты, используя только разрешенные символы , должно быть хорошо.