2013-04-29 71 views
0

我有一些問題,我無法定義原因。將二進制轉換爲字符串時不顯示字符串

我有函數來解密一些信息,返回值是一個從二進制轉換爲字符串的字符串。

public static string Decrypt(string encryptedText, string completeEncodedKey, int keySize) 
    { 

     RijndaelManaged aesEncryption = new RijndaelManaged(); 
     aesEncryption.KeySize = keySize; 
     aesEncryption.BlockSize = 128; 
     aesEncryption.Mode = CipherMode.CBC; 
     aesEncryption.Padding = PaddingMode.Zeros; 
     aesEncryption.IV = Convert.FromBase64String(ASCIIEncoding.UTF8.GetString(Convert.FromBase64String(completeEncodedKey)).Split(',')[0]); 
     aesEncryption.Key = Convert.FromBase64String(ASCIIEncoding.UTF8.GetString(Convert.FromBase64String(completeEncodedKey)).Split(',')[1]); 
     ICryptoTransform decrypto = aesEncryption.CreateDecryptor(); 
     byte[] encryptedBytes = Convert.FromBase64CharArray(encryptedText.ToCharArray(), 0, encryptedText.Length);// convert the cipertext to binary 
     string RESULT = (string)ASCIIEncoding.UTF8.GetString(decrypto.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length));//convert the binary to string 

     return RESULT; 
    } 

當我通過此消息框調用此函數並得到結果,然後試圖顯示與其他字符串的結果,例如出現問題:

String result= function.Decrypt(textToBeDecrypted, key, 128); 


MessageBox.Show("This is sample text " + result + " here i want to append another string "); 

ONLY附加文本(IN這個例子:「這裏我想追加另一個字符串」)不顯示

這是怎麼回事?

+2

使用調試器。一步一步解密。一路查看數值。找到問題。 – tnw 2013-04-29 19:27:23

+0

結果值顯示的很好,它按照我的預期返回。但是當我追加另一個文本時,這個新文本不會顯示。 – 2013-04-29 19:32:23

+0

所以你的意思是'這裏我想追加另一個字符串'不顯示? – tnw 2013-04-29 19:37:22

回答

1

試試這個:

string result = function.Decrypt(textToBeDecrypted, key, 128).Replace("\0", string.Empty); 
+0

哇現在很好用! 非常感謝@tnw! – 2013-04-29 19:54:51

+0

和@Jonesy謝謝爲了突出這個問題!:)非常感謝你 – 2013-04-29 19:55:34

+0

@hum。我看到你從來沒有upvoted /之前接受 - 請不要忘記upvote /接受任何答案,你最好解決你的問題,很高興幫助。 – tnw 2013-04-29 19:56:19

1
aesEncryption.Padding = PaddingMode.Zeros; 

你有你的消息的末尾添加零...和零結束的字符串,只要在Win32 API的MessageBox關注。

在解密過程中刪除填充(使用不同的填充模式使這更容易)。

相關問題