2014-01-19 69 views
1

我正在構建一個C#應用程序,該應用程序使用System.Security.Cryptography.Rijndael對文本進行加密並在文本框中顯示結果,以便接收方複製結果並使用相同的密鑰對結果進行解密。無法從字節轉換爲字符串

當我將由EncryptStringToBytes函數返回的字節[]中的加密文本轉換爲可以顯示在文本框中的字符串以便稍後進行復制和解密時,會發生問題。

我已經使用了下面的轉換方法,但沒有一個能夠顯示一個有意義的字符串,可以稍後用於解密,並且可以重新轉換爲以前從EncryptStringToBytes返回的原始字節形狀。

下面是用於執行轉換的方法:爲了

從字節轉換[]以串將被顯示在文本框:

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

從字符串轉換從文本框字節複製

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

擺脫任何二進制序列有意義的文本的最簡單方法是使用[「十六進制串」(HTTP://計算器。 com/questions/623104/byte-to-hex-string),即「87160a20a03daec4adc1934」等。如果您使用編碼器獲取實際文本,則會遇到無法輕鬆表示的二進制序列問題。 – bzlm

回答

4

你應該嘗試的編碼和解碼:[],以作爲參數,以完成decrytion進程發送到DecryptStringFromBytes在64編碼。 使用轉換類。

textBox3.Text =Convert.ToBase64String(encryptionResult) 

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

如果你還是想用編碼,選擇:

string decodedString = Encoding.UTF8.GetString(textToDecrypt);