ITパスポート試験 / 平成21年度 秋期 ITパスポート試験 / 問62
certification-simodake-work

平成21年度 秋期 ITパスポート試験 問62 解説 暗号化の仕組み

設問図

小文字の英字からなる文字列の暗号化を考える。次表で英字を文字番号に変換し, 変換後の文字番号について1文字目分には1を, 2文字目分には2を, …, n文字目分 にはnを加える。それぞれの数を26で割った余りを新たに文字番号とみなし, 表から 対応する英字に変換する。 例 fax → 6, 1, 24 → 6+1, 1+2, 24+3 → 7, 3, 27 → 7, 3, 1 → gca この手続で暗号化した結果が“tmb”であるとき, 元の文字列はどれか。

  1. she
  2. shy
  3. ski
  4. sky ✓ 正答

解説

暗号化とは逆の操作(復号)を行うことで元の文字列を導き出します。与えられた暗号 t, m, b を文字番号に変換し、順番に 1, 2, 3 を減算します。結果が負になった場合は 26 を加えることで正しい番号を求め、表から英字に変換します。

逆算による手順の実行

まず、表に基づき t, m, b を数字に置き換えます。

  • t: 20
  • m: 13
  • b: 2

次に、暗号化の際に加算した数(1, 2, 3)を順番に引いていきます。

1文字目: 201=1920 - 1 = 19 表より、19に対応する文字は s です。

2文字目: 132=1113 - 2 = 11 表より、11に対応する文字は k です。

3文字目: 23=12 - 3 = -1 計算結果が負になった場合、アルファベットの周期である 26 を加えます。1+26=25-1 + 26 = 25 表より、25に対応する文字は y です。

これらを組み合わせると sky となります。

剰余演算と暗号化の仕組み

この問題は、シーザー暗号に似た規則的な変換を行っています。暗号化の手順は、文字の番号 PP に対して位置に応じた値 nn を足し、2626 で割った余り CC を求める C=(P+n)mod26C = (P + n) \mod 26 という計算です。

復号を行う際は、この逆の操作である P=(Cn)mod26P = (C - n) \mod 26 を計算します。ここでのポイントは、計算結果が負になった場合に 26 を足すという処理です。これは時計の針を逆回しにする感覚と似ています。1時から1時間を引けば12時(11=0121 - 1 = 0 \rightarrow 12)に戻るように、数学の世界では循環する数値(剰余系)の引き算において、周期分を加えることで正の値を導き出します。

アルゴリズム的思考の重要性

ITパスポート試験でこのような問題が出題される理由は、特定の知識を問うというよりは、提示されたルールを正確に読み解き、その逆の手順を論理的に組み立てる能力を試すためです。

システム開発の現場では、仕様書に基づいてプログラムを実装したり、バグの原因を特定したりするために、このような「処理の逆順を追う」作業が頻繁に発生します。例えば、データベースに保存されたデータから元の入力値を推定したり、暗号化された通信データから元の情報を復元したりする際、今回のように計算手順の論理構造を整理して考える力が必要となります。試験においても、複雑な計算に見えても、焦らず一手順ずつ丁寧に書き出すことで、ミスなく確実に正解にたどり着くことができます。

参考リンク

学習の記録にははてなブックマーク!

気づいたこと・覚えたことをコメントにメモしよう