在我的程序中,我使用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);
答案 0 :(得分:1)
是的,这是一个unicode错误。您通过将数据作为字符串读取来处理不属于的编码,因此错误发生在您显示的代码之前。
您应该将数据作为二进制数据读取,以便从头开始将其作为字节数组,以便您可以跳过转换为unicode并返回,因为这是导致错误的原因。