« シーザー暗号プログラム | トップページ | Nautilusの調子が悪い »

2007/11/16

シーザー暗号プログラム(その2)

先ほどのプログラムを少し改良して大文字、小文字、プラスαを扱えるようにしました。

 while(string[i] != '\0'){
    number = (string[i] - 'a' + key) % 26;
    angou[i] = 'a' + number;
    ++i;
  }

の部分を次のように改造します。

 while(string[i] != '\0'){
    number = (string[i] - 'A' + key) % 58;
    angou[i] = 'A' + number;
    ++i;
  }

これは、'A'の値が65、'a'の値が97と表示されたので大文字A~小文字zまでが58文字あるだろうと類推しました。('A'や'a'の値は環境によって違いますが、A~zまで58文字であることは変わりません)

この改造は副作用で [ \ ] ^ _ `を扱えるので解読するには英アルファベットではなくJISコード表を見なくてはなりませんが・・・。(Zooを2文字ずらすと\qqとなる)

|

« シーザー暗号プログラム | トップページ | Nautilusの調子が悪い »

Algorithm」カテゴリの記事

C」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/222903/17089199

この記事へのトラックバック一覧です: シーザー暗号プログラム(その2):

« シーザー暗号プログラム | トップページ | Nautilusの調子が悪い »