シーザー暗号プログラム
今回はシーザー暗号を作ってみました。シーザー暗号とは文字を指定した数だけずらす暗号で換字式暗号とも言われる簡単な暗号です。作ったプログラムは次のようになっています。
#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で割るためには都合がいいので)
このプログラム英小文字しか扱えないなど欠陥だらけのプログラムでもあります。(文字を扱うのは苦手なので)
---追記---
このシーザー暗号プログラムは復号のことを考慮していないので、こちらの記事を読むことをお勧めします。
| 固定リンク
「Algorithm」カテゴリの記事
- コラッツの問題(2008.02.21)
- フィボナッチ数を求める(2008.02.19)
- べき剰余を求める(2008.02.12)
- RSA暗号プログラム(2008.02.09)
- RSA暗号の公開鍵と秘密鍵を生成する(2008.02.08)
「C」カテゴリの記事
- CG法(2008.12.09)
- グラフの表示を遅延(2008.07.14)
- ポインタのこと、もっと知りたいんです。(2008.06.28)
- mallocで動的に確保してくれる関数(2008.05.27)
- Static(2008.04.17)
コメント