ITパスポート過去問 令和1年度(2019年)問70
大文字の英字から成る文字列の暗号化を考える。暗号化の手順と例は次のとおりである。この手順で暗号化した結果が“EGE”であるとき,元の文字列はどれか。


選択肢
- ア:BED
- イ:DEB
- ウ:FIH
- エ:HIF
- ア
- イ
- ウ
- エ
正解と解き方・学習ポイント(AI解説)
暗号文“EGE”を表に従って文字番号(4,6,4)に変換し、暗号化で加算した位置番号(1,2,3)を復号では減算します。(3,4,1)となり、表で英字に戻すと“DEB”なので正解は「イ」です。
Point
この問題は、英字を文字番号(0~25)に変換し、各文字の位置番号を加算した後に26で割った余りを取る暗号化を、逆手順で復号できるかを確認するものです。
解くために必要な知識
この問題を解くには、英字を数値に対応付けて計算し、26で循環させる処理を理解している必要があります。
用語の整理
| 用語 | 意味 |
|---|---|
| 文字番号 | 英字を0~25の数値に対応付けたもの(A=0、B=1、…、Z=25) |
| 暗号化 | 規則に従って元の文字列を別の文字列に変換することです |
| 復号 | 暗号化の逆の規則で、元の文字列に戻すことです |
| 26で割った余り | 計算結果を0~25の範囲に収めるために、26で割った余りに置き換えることです |
復号の基本手順
1. 暗号文の英字を文字番号(0~25)にする
表を使って、暗号文を数値の並びにします。
2. 暗号化で加算した値を減算する
暗号化の規則が「n文字目にnを加算」なので、復号では「n文字目からnを減算」します。
3. 0~25に収める(必要なら補正する)
減算して負になった場合は、次の式で0~25に戻します。
補正式:減算結果が負の場合、減算結果 = 減算結果 + 26
4. 文字番号を英字に戻す
表を使って数値を英字に戻せば、元の文字列が得られます。
問題の解法手順
暗号化は「英字→文字番号→位置番号を加算→26で割った余り→英字」です。元の文字列を求めるには逆順で処理します。
1. 暗号文を文字番号に変換する
表より、A=0、B=1、…、Z=25です。
-
E:4
-
G:6
-
E:4
よって、暗号文は(4, 6, 4)です。
2. 位置番号の加算を打ち消す(減算する)
暗号化では1文字目に1、2文字目に2、3文字目に3を加算しています。復号では同じ値を減算します。
-
1文字目:4 - 1 = 3
-
2文字目:6 - 2 = 4
-
3文字目:4 - 3 = 1
26で割った余りの補正について
減算結果が負になった場合は、26を足して0~25の範囲に戻します。
今回の結果はすべて0以上なので補正は不要です。
3. 文字番号を英字に戻す
-
3:D
-
4:E
-
1:B
したがって元の文字列はDEBで、正解は「イ」です。
選択肢ごとの解説
- ア:不正解
BEDはB=1、E=4、D=3です。位置番号を加算すると(1+1, 4+2, 3+3)=(2, 6, 6)で、英字に戻すとCGGとなりEGEになりません。
- イ:正解
DEBはD=3、E=4、B=1です。位置番号を加算すると(3+1, 4+2, 1+3)=(4, 6, 4)で、英字に戻すとEGEとなります。
- ウ:不正解
FIHはF=5、I=8、H=7です。位置番号を加算すると(5+1, 8+2, 7+3)=(6, 10, 10)で、英字に戻すとGKKとなりEGEになりません。
- エ:不正解
HIFはH=7、I=8、F=5です。位置番号を加算すると(7+1, 8+2, 5+3)=(8, 10, 8)で、英字に戻すとIKIとなりEGEになりません。
まとめ
暗号文“EGE”を表に従って文字番号(4,6,4)に変換し、暗号化で加算した位置番号(1,2,3)を復号では減算します。(3,4,1)となり、表で英字に戻すと“DEB”なので正解は「イ」です。
テクノロジ系 > 基礎理論 > アルゴリズムとプログラミング
BEDはB=1、E=4、D=3です。位置番号を加算すると(1+1, 4+2, 3+3)=(2, 6, 6)で、英字に戻すとCGGとなりEGEになりません。
DEBはD=3、E=4、B=1です。位置番号を加算すると(3+1, 4+2, 1+3)=(4, 6, 4)で、英字に戻すとEGEとなります。
FIHはF=5、I=8、H=7です。位置番号を加算すると(5+1, 8+2, 7+3)=(6, 10, 10)で、英字に戻すとGKKとなりEGEになりません。
HIFはH=7、I=8、F=5です。位置番号を加算すると(7+1, 8+2, 5+3)=(8, 10, 8)で、英字に戻すとIKIとなりEGEになりません。