« デュアルブートはいろいろ面倒 | トップページ | シーザー暗号プログラム(その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) »

C」カテゴリの記事

Algorithm」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


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

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