将二进制转换为字符串时不显示字符串

本文关键字:字符串 显示 二进制 转换 | 更新日期: 2023-09-27 18:11:18

我遇到了一些问题,无法定义原因。

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

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 ");

仅附加文本(在本例中:"此处我想附加另一个字符串"(不显示

这个怎么了?

将二进制转换为字符串时不显示字符串

试试这个:

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

http://bytes.com/topic/c-sharp/answers/275256-rijndael-decrypt-returning-escape-characters-end-string

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

aesEncryption.Padding = PaddingMode.Zeros;

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

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