2014-01-19 4 views
1

Я создаю приложение C#, которое зашифровывает текст и отображает результат в текстовом поле с использованием System.Security.Cryptography.Rijndael, чтобы получатель копировал результаты и расшифровывал их с использованием того же ключа.Не удается преобразовать из байта в строку

Проблема возникает, когда я преобразовываю зашифрованный текст из байта [], возвращаемого функцией EncryptStringToBytes, в строку, которая может быть отображена в текстовом поле для копирования и дешифрования позже.

Я использовал приведенные ниже методы преобразования, но ни один из них не смог отобразить содержательную строку, которая может быть использована позже для дешифрования и может быть повторно преобразована в форму ОРИГИНАЛЬНОГО байта, возвращенную ранее с EncryptStringToBytes.

Ниже приведены методы, используемые для выполнения преобразования:

Преобразование из байта [] в строку, чтобы отображаться в TextBox:

textBox3.Text = Encoding.Default.GetString(encryptionResult) 

Преобразование из строки скопированного из TextBox в байте [], чтобы быть отправлены в качестве аргумента DecryptStringFromBytes для того, чтобы завершить процесс decrytion:

byte[] textToByte = Encoding.Default.GetBytes(textToDecrypt) 
+1

Самый простой способ получить осмысленный текст из любой бинарной последовательности использовать [ «шестнадцатеричной»] (HTTP: // StackOverflow. com/questions/623104/byte-to-hex-string), то есть «87160a20a03daec4adc1934» и тому подобное. Если вы используете кодировщик для получения фактического текста, вы столкнетесь с проблемами с двоичными последовательностями, которые нелегко представить. – bzlm

ответ

4

Вы должны попробовать кодирования и декодирования в 64encoding. Используйте Convert Class.

textBox3.Text =Convert.ToBase64String(encryptionResult) 

byte[] textToByte = Convert.FromBase64String(textToDecrypt); 

Если вы все еще хотите использовать кодирование, выберите:

string decodedString = Encoding.UTF8.GetString(textToDecrypt); 
Смежные вопросы