私は非常にトリッキーな質問を受けました (少なくとも私にとっては)、現在、ポリアルファベット置換で動作する小さくて単純な暗号化および復号化プログラムをコーディングしています。
これが暗号化機能です。
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 (申し訳ありませんが、画像を直接投稿することはできません。私は 10 担当者未満です)
FF FE 8A 00 A6 00 CC 00 A4 00 B0 00
太字のものは正しいもので、最初の FF FE は暗号化/復号化にはまったく役に立たず、00 は不要です (これが標準の Unicode エンコーディングであることはわかっています。私の質問は、このエンコーディングなしでそれを達成するにはどうすればよいかということです。対応する Unicode 文字を表示します)
私が達成したいことが明確であることを願っています。文字だけを書きたいと思います。したがって、この特別なケースでは、暗号化されたファイルの 16 進表示は次の ようになります。 ¦Ì¤°
これまでのところ、これを解決するためのすべての試みに失敗しています。解決策はおそらく本当に簡単です...