シーザー暗号プログラム(その3)
今度は平文ファイルを読み込んで暗号化されたファイルを出力するように改造してみました。では早速ソースを
#include <stdio.h> int main(void) { int key, code, input, output; FILE *fpi, *fpo; char file1[64], file2[64]; printf("==============================\n"); printf("平文ファイル:"); scanf("%s", file1); printf("暗号ファイル:"); scanf("%s", file2); printf("鍵を入力 :"); scanf("%d", &key); if( (fpi = fopen(file1, "r") ) == NULL){ printf("Failure.\n"); } else { if( (fpo = fopen(file2, "w") ) == NULL){ printf("Failure.\n"); } else { while( (input = fgetc(fpi)) != EOF ){ if(input == ' '){ fputc(input, fpo); } else { code = (input - 'A' + key) % 58; output = 'A' + code; fputc(output, fpo); } } fclose(fpo); } fclose(fpi); } printf("==============================\n"); return 0; }
このプログラムは空白文字を暗号化せずにそのまま出力するようにしています。例えば、I like programingを暗号化するとM pmoi tvskveqmrkと出力されます。(ちゃんと空白をスルーしてくれていました)
シーザー暗号はこのくらいにして今度はアフィン暗号やRSA暗号に挑戦しようと思います。(これを応用すればアフィン暗号はすぐにできそう)
(追記): if(input == ' ') を if(input == ' ' || input == '.' || input == ',' || input == '\n') にすると基本的な英文と改行に耐えられるかと
| 固定リンク
「C」カテゴリの記事
- CG法(2008.12.09)
- NTEmacs + MinGW + MSYSでWindows上にC言語開発環境を構築してみる - その5(2008.10.10)
- NTEmacs + MinGW + MSYSでWindows上にC言語開発環境を構築してみる - その4(2008.10.09)
- NTEmacs + MinGW + MSYSでWindows上にC言語開発環境を構築してみる - その3(2008.10.08)
- NTEmacs + MinGW + MSYSでWindows上にC言語開発環境を構築してみる - その2(2008.10.07)
「Algorithm」カテゴリの記事
- コラッツの問題(2008.02.21)
- フィボナッチ数を求める(2008.02.19)
- べき剰余を求める(2008.02.12)
- RSA暗号プログラム(2008.02.09)
- RSA暗号の公開鍵と秘密鍵を生成する(2008.02.08)
この記事へのコメントは終了しました。
コメント