使用加密的奇怪字符

时间:2011-03-12 10:07:00

标签: c# encryption unicode

在我的程序中,我使用Triple DES算法加密和解密.PNG文件。它加密和解密,但.PNG中的一些字符被这些字符替换: �

我认为这是一个Unicode错误,但我不知道是什么。这是代码:

        byte[] encrypted_data = UTF8Encoding.UTF8.GetBytes(file_data);
        TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
        tdes.Key = key;
        tdes.Mode = CipherMode.ECB;
        tdes.Padding = PaddingMode.PKCS7;
        ICryptoTransform cTransform = tdes.CreateEncryptor();
        byte[] resultArray =
        cTransform.TransformFinalBlock(encrypted_data, 0, encrypted_data.Length);
        tdes.Clear();
        return Convert.ToBase64String(resultArray, 0, resultArray.Length);

1 个答案:

答案 0 :(得分:1)

是的,这是一个unicode错误。您通过将数据作为字符串读取来处理不属于的编码,因此错误发生在您显示的代码之前。

您应该将数据作为二进制数据读取,以便从头开始将其作为字节数组,以便您可以跳过转换为unicode并返回,因为这是导致错误的原因。