我有一个非常棘手的问题(至少对我而言),我目前正在编写一个小而简单的加密和解密程序,该程序与多字母替换一起使用。
这是加密功能:
static string Encr(string plainText, string key)
{
char[] chars = new char[plainText.Length];
int h = 0;
for (int i = 0; i < plainText.Length; i++)
{
if (h == key.Length)
h = 0;
int j = plainText[i] + key[h];
chars[i] = (char)j;
h++;
}
StreamWriter sw = new StreamWriter(FILE_NAME, false, Encoding.Unicode);
for (int x = 0; x < plainText.Length; x++)
{
sw.Write(chars[x]);
}
sw.Close();
return new string(chars);
}
它工作正常,现在我的问题是 StreamWriter 创建的 outputFile 包含额外的不需要的 00(由于 Unicode 编码)和 2 个完全错误的起始值也由于 Unicode 编码
http://abload.de/img/unbenannt-16ilx4.jpg (对不起,我不能直接发布图片,因为我 < 10rep)
FF FE 8A 00 A6 00 CC 00 A4 00 B0 00
粗体是正确的,一开始的 FF FE 对我的加密/解密完全没用,并且 00 是不需要的(我知道这是标准的 Unicode 编码,我的问题是我如何在没有这种编码的情况下实现它但仍然能够显示相应的 Unicode 字符)
我希望很清楚我想要实现的目标,我只想写出字符。因此,在这种特殊情况下,加密文件的十六进制视图如下所示: 8A A6 CC A4 B0,根据http://unicode-table.com/编码为 Unicode UTF-8 ,因此对应的字母为Š ¦Ì¤°
到目前为止,我试图解决这个问题的所有尝试都失败了。解决方案可能真的很容易通过......