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

選択肢
ア: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、つまり選択肢の イ が正解になります。
解法ステップ
- 暗号文「EGE」を文字番号に変換する。
E=4、G=6、E=4 → 暗号化後の数値は 。 - 位置番号を引く(1文字目は1、2文字目は2、3文字目は3)。
。 - 引き算の結果が負になった場合は26を足して調整する(今回は不要)。
- 数字を文字に戻す(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"。不一致です。
(各選択肢は、文字→番号→位置加算→番号→文字の順で暗号化して照合すると確かめられます。)
よくある誤解
-
Aを1とする(A=1)誤り
問題では表に A=0 と明記されています。Aを1にすると全ての計算がずれて不正解になります。番号は必ず A=0 から数えることを確認してください。 -
位置番号を0から数える誤り
位置加算は「1文字目に1、2文字目に2、…」です。0から数えると結果がずれます。 -
負の数の扱いを忘れる(モジュロの理解不足)
暗号化後から元に戻すときに差が負になる場合があります。その場合は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 になります。
A1: Aは0なので、その位置番号を引いて負になれば26を足します。例:暗号文の3文字目がA(0)なら元は → X になります。
Q2: 文字列が長くても同じ手順で良いですか?
A2: はい。同じ手順(位置番号を加算→26で剰余→文字変換)を文字数分繰り返します。復号は位置番号を引くだけです。
A2: はい。同じ手順(位置番号を加算→26で剰余→文字変換)を文字数分繰り返します。復号は位置番号を引くだけです。
Q3: 小文字や記号はどう扱いますか?
A3: 問題文では「大文字の英字から成る」と明記されています。小文字や記号は別扱いで、この手順には含みません。
A3: 問題文では「大文字の英字から成る」と明記されています。小文字や記号は別扱いで、この手順には含みません。
関連キーワード: 暗号化、置換暗号、モジュロ演算、文字番号表、A=0表記、シーザー暗号、復号方法

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

