« デュアルブートはいろいろ面倒 | トップページ | シーザー暗号プログラム(その2) »

2007/11/16

シーザー暗号プログラム

今回はシーザー暗号を作ってみました。シーザー暗号とは文字を指定した数だけずらす暗号で換字式暗号とも言われる簡単な暗号です。作ったプログラムは次のようになっています。

#include <stdio.h>

#define LEN 255

int main(void)
{
  char string[LEN];
  char angou[LEN];
  int  key, number, i;

  printf("平文を入力(英小文字のみ):");
  scanf("%s", string);
  printf("鍵を入力:");
  scanf("%d", &key);

  i = 0;
  while(string[i] != '\0'){
    number = (string[i] - 'a' + key) % 26;
    angou[i] = 'a' + number;
    ++i;
  }
  angou[i] = '\0';
  
  printf("暗号文:%s\n", angou);
  
  return 0;
}

numberの値を求めるところで行った処理は、入力した文字から'a'で引くことによって'a'との差分を求めています。(26で割るためには都合がいいので)

このプログラム英小文字しか扱えないなど欠陥だらけのプログラムでもあります。(文字を扱うのは苦手なので)

---追記---

このシーザー暗号プログラムは復号のことを考慮していないので、こちらの記事を読むことをお勧めします。

|

« デュアルブートはいろいろ面倒 | トップページ | シーザー暗号プログラム(その2) »

Algorithm」カテゴリの記事

C」カテゴリの記事

コメント

コメントを書く



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


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



トラックバック

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

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

« デュアルブートはいろいろ面倒 | トップページ | シーザー暗号プログラム(その2) »