戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

ITパスポート 2019年 秋期 70


問題文

大文字の英字から成る文字列の暗号化を考える。暗号化の手順と例は次のとおりである。この手順で暗号化した結果が“EGE”であるとき、元の文字列はどれか。
ITパスポート 2019年 秋期  問70の問題画像

選択肢

BED
DEB(正解)
FIH
HIF

🔒 解説は解答すると表示されます

大文字の英字から成る文字列の暗号化【ITパスポート 解説】

正解の理由

暗号化の流れは次の通りです。まず文字を番号に変換(A=0、B=1、...、Z=25)し、文字位置(1文字目に1、2文字目に2、…)を加えます。26で割った余りを再び文字に戻します。暗号化の結果が「EGE」(E=4、G=6、E=4)でしたから、暗号化後の数値は です。これが「元の文字番号 + 位置番号」を26で割った余りになっています。
したがって元の文字番号は次のように逆算できます(「暗号化後の数値 − 位置番号」を26で割った余り)。計算すると元の文字番号は になり、対応する英字は D, E, B、つまり選択肢の が正解になります。

解法ステップ

  1. 暗号文「EGE」を文字番号に変換する。
    E=4、G=6、E=4 → 暗号化後の数値は
  2. 位置番号を引く(1文字目は1、2文字目は2、3文字目は3)。
  3. 引き算の結果が負になった場合は26を足して調整する(今回は不要)。
  4. 数字を文字に戻す(0→A, 1→B, 2→C, 3→D, 4→E...)。
    → 元の文字列は「DEB」。
ポイント:文字番号は A=0 から始まる点と、位置番号は1から始まる点を間違えないでください。

選択肢別の誤答解説

  • ア: BED
    B=1、E=4、D=3 に位置加算 (+1,+2,+3) をすると → C,G,G → "CGG"。よって暗号化結果は"CGG"で、"EGE"にはなりません。
  • : DEB
    D=3、E=4、B=1 に位置加算 (+1,+2,+3) → → E,G,E → "EGE"。問題の暗号文と一致します。よって正解です。
  • ウ: FIH
    F=5、I=8、H=7 に位置加算 (+1,+2,+3) → → G,K,K → "GKK"。不一致です。
  • エ: HIF
    H=7、I=8、F=5 に位置加算 (+1,+2,+3) → → I,K,I → "IKI"。不一致です。
(各選択肢は、文字→番号→位置加算→番号→文字の順で暗号化して照合すると確かめられます。)

よくある誤解

  1. Aを1とする(A=1)誤り
    問題では表に A=0 と明記されています。Aを1にすると全ての計算がずれて不正解になります。番号は必ず A=0 から数えることを確認してください。
  2. 位置番号を0から数える誤り
    位置加算は「1文字目に1、2文字目に2、…」です。0から数えると結果がずれます。
  3. 負の数の扱いを忘れる(モジュロの理解不足)
    暗号化後から元に戻すときに差が負になる場合があります。その場合は26を足して正の数にします(例: )。

補足コラム:モジュロ(剰余)演算の感覚

この暗号は「26で割った余り(モジュロ演算)」を使っています。モジュロ演算とは、ある数を26で割ったときの余りだけを扱う操作です。たとえば 、また (負の数に26を足して扱う)というルールです。アルファベット26文字での回転(輪っか)を考えるとイメージしやすいです。Caesar cipher(シーザー暗号:アルファベットを一定数だけずらす暗号)と考え方が似ていますが、本問は文字ごとにずらす量が位置で変わる点が違います。
簡単なプログラム例(復号:暗号文 → 平文)
def decrypt(cipher):
    res = []
    for i, ch in enumerate(cipher):
        num = ord(ch) - ord('A')       # A=0, B=1, ...
        orig = (num - (i+1)) % 26      # 位置は1から
        res.append(chr(orig + ord('A')))
    return ''.join(res)

print(decrypt("EGE"))  # => DEB

FAQ

Q1: もし暗号文に"A"があったらどう扱いますか?
A1: Aは0なので、その位置番号を引いて負になれば26を足します。例:暗号文の3文字目がA(0)なら元は → X になります。
Q2: 文字列が長くても同じ手順で良いですか?
A2: はい。同じ手順(位置番号を加算→26で剰余→文字変換)を文字数分繰り返します。復号は位置番号を引くだけです。
Q3: 小文字や記号はどう扱いますか?
A3: 問題文では「大文字の英字から成る」と明記されています。小文字や記号は別扱いで、この手順には含みません。

関連キーワード: 暗号化、置換暗号、モジュロ演算、文字番号表、A=0表記、シーザー暗号、復号方法
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ITパスポート
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について