Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将二进制文件转换为字符串时不显示字符串_C#_String_Binary_Ascii - Fatal编程技术网

C# 将二进制文件转换为字符串时不显示字符串

C# 将二进制文件转换为字符串时不显示字符串,c#,string,binary,ascii,C#,String,Binary,Ascii,我有一些问题,我无法解释原因 我有一个函数来解密一些信息,返回值是一个从二进制转换成字符串的字符串 public static string Decrypt(string encryptedText, string completeEncodedKey, int keySize) { RijndaelManaged aesEncryption = new RijndaelManaged(); aesEncryption.KeySize = keySize

我有一些问题,我无法解释原因

我有一个函数来解密一些信息,返回值是一个从二进制转换成字符串的字符串

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 ");
仅附加的文本(在本例中为“此处我想附加另一个字符串”)不显示

这有什么问题吗?

似乎是同一个问题。我打赌你的结尾有一个转义字符(\0)。

似乎是同一个问题。我打赌你的结尾有一个转义字符(\0)。

试试这个:

string result = function.Decrypt(textToBeDecrypted, key, 128).Replace("\0", string.Empty);
试试这个:

string result = function.Decrypt(textToBeDecrypted, key, 128).Replace("\0", string.Empty);
您在邮件末尾添加了零。。。就Win32 MessageBox API而言,零结束字符串

在解密过程中删除填充(使用不同的填充模式使其更容易)

您在邮件末尾添加了零。。。就Win32 MessageBox API而言,零结束字符串


在解密过程中删除填充(使用不同的填充模式使其更容易)。

使用调试器。单步执行
解密
。沿途检查值。查找问题。结果值显示良好,并按预期返回。但是当我附加另一个文本时,这个新文本不会显示。所以你的意思是
这里我想附加另一个字符串
不会显示?这正是我的意思使用调试器。单步执行
解密
。沿途检查值。查找问题。结果值显示良好,并按预期返回。但是当我附加另一个文本时,这个新文本不会显示。那么你的意思是
这里我想附加另一个字符串
不会显示?正是我的意思它有意义,,我将探索返回字符串的字符它有意义,,我将探索返回字符串的角色,@Jonesy感谢您强调这个问题!:)多谢各位much@hum. 我看你以前从来没有投过赞成票/接受过——请不要忘记投赞成票/接受你认为最能解决问题的答案。很乐意帮忙。亲爱的,我不确定一个简单的替代品是否有效。很高兴它这么做了。@Jonesy谢谢你强调了这个问题!:)多谢各位much@hum. 我看你以前从来没有投过赞成票/接受过——请不要忘记投赞成票/接受你认为最能解决问题的答案。很乐意帮忙。亲爱的,我不确定一个简单的替代品是否有效。很高兴它做到了。