新しいアカウントで始めました。

身の回りの出来事や写真が中心です。

VS2019で遊んでました。独習C#第3版P198第5章課題9

2020-03-04 15:57:17 | C#、VBなど

VS2019のコードをコピペしました。


using System;
namespace Chapter01All
{
    class Encode
    {
        static void Main()
        {
            string msg = "This is a test";
            string encmsg = "";
            string decmsg = "";
            string key = "abcdefgi";
            int j;

            Console.Write("Original message: ");
            Console.WriteLine(msg);

            // メッセージの暗号化 ここの部分だけ考えました。
            int i; 
            for ( i = 0; i < msg.Length; i = i + 8)
            {
                int k; int n;
                for (k = 0; i + k < msg.Length; k++)
                {
                    n = i + k;
                    encmsg = encmsg + (char)(msg[n] ^ key[k]);
                    //j++;
                    if (k == 7) break;
                }
            }

            Console.Write("Encoded message: ");
            Console.WriteLine(encmsg);

            // メッセージの復号化 ここの部分は本のままです。
            j = 0;
            for ( i = 0; i < msg.Length; i++)
            {
                decmsg = decmsg + (char)(encmsg[i] ^ key[j]);
                j++;
                if (j == 8) j = 0;
            }

            Console.Write("Decoded message: ");
            Console.WriteLine(decmsg);
        }
    }
}


 本の通りだと、暗号化の部分とデコードの部分が同じルーティンなんですが、二重ループで書いてみました。演算子「Λ」は排他的論理和というようです。2度繰り返すと元に戻るそうです。この場合のkeyは同じものです。


この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« VS2019、C#で遊んでました。... | トップ | VS2019,C#で遊んでました。独... »
最新の画像もっと見る

C#、VBなど」カテゴリの最新記事