ITパスポート試験

問70

ITパスポート過去問 令和1年度(2019年)問70

大文字の英字から成る文字列の暗号化を考える。暗号化の手順と例は次のとおりである。この手順で暗号化した結果が“EGE”であるとき,元の文字列はどれか。

選択肢

  • BED
  • DEB
  • FIH
  • HIF

正解と解き方・学習ポイント(AI解説)

正解:
あなたの回答:未回答

暗号文“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になりません。

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”なので正解は「イ」です。

テクノロジ系 > 基礎理論 > アルゴリズムとプログラミング

順次、単語を追加予定です。もうしばらくお待ちください。