平成20年度秋季 基本情報技術者試験(FE)の午後問題10は、
- (換字暗号)与えられた平文を、換字表を用いて暗号文に変換する関数encrypt_text関数
に関する問題でした。
プログラム例(h20a_fe_pm10.c)
実行結果
試験問題では、暗号化する関数のみでしたが、元に戻せないと面白くないので、平文に戻す復号関数(decrypt_text)も作って試してみました。換字表についても、問題文とは異なっています(単純な換字表です)。
コンパイル
$ gcc h20a_fe_pm10.c -o fecrypt
平文(in.txt)
This is a plain text. Good Luck!!
暗号化(in.txt -> out.txt)
$ ./fecrypt e in.txt out.txt !"#$%&'()*+,-./0123456 789:;<=>?@ABCDEFGHIJKLM NOPQRSTUVWXYZ[\]^_`abcd efghijklmnopqrstuvwxyz{
暗号化されたファイル(out.txt)
Qkjt$ee.N3qmRxe)ufyu0 E++N6GzTz99
復号(out.txt -> tmp.txt)
$ ./fecrypt d out.txt tmp.txt !"#$%&'()*+,-./0123456 789:;<=>?@ABCDEFGHIJKLM NOPQRSTUVWXYZ[\]^_`abcd efghijklmnopqrstuvwxyz{ $ cat tmp.txt This is a plain text. Good Luck!!