英字の文字番号を使う暗号化はどう逆算する?
ITパスポート試験 令和元年度秋期 問70 / アルゴリズムとプログラミング › アルゴリズムとプログラミング
過去問にチャレンジ
大文字の英字から成る文字列の暗号化を考える。暗号化の手順と例は次のとおりである。この手順で暗号化した結果が“EGE”であるとき、元の文字列はどれか。

- ア
BED
- イ
DEB
- ウ
FIH
- エ
HIF
会話形式の解説
講師英字を番号に直し、文字ごとに異なる数を加える手順に注目します。暗号文から逆算してみましょう。
受験者英字の番号は、Aを1として数えますか。
講師この表ではAが0、Bが1です。Eは4、Gは6なので、暗号文は4、6、4に対応します。
受験者元の文字に戻すには、加えた数を引けばよいのですね。
講師はい。1文字目から順に1、2、3を引くと、3、4、1です。英字に戻すとDEBになります。
受験者DEBを暗号化しても、同じ結果になりますか。
講師D、E、Bは3、4、1です。順に1、2、3を加えると4、6、4になり、EGEになります。
受験者BEDはEとDを含むので近そうですが、どうなりますか。
講師BEDは1、4、3です。位置に応じて加えると2、6、6となり、CGGです。
受験者残るFIHとHIFも、同じ手順で確かめられますね。
講師FIHは5、8、7から6、10、10となり、GKKです。HIFは7、8、5から8、10、8となり、IKIです。どちらもEGEにはなりません。
受験者文字ごとに加える数が違うので、英字の並びだけで判断せず、番号に直して確かめます。
講師そのとおりです。手順では加算後に26で割った余りを使います。逆算して負の数になった場合は、26を加えてから英字に戻せます。
まとめ
この表では英字をA=0からZ=25の番号に変えます。暗号化では文字の位置に応じて、1文字目から順に1、2、3を加え、26で割った余りを英字に戻します。EGEの番号4、6、4から順に1、2、3を引くと3、4、1となるため、元の文字列はDEBです。ほかの候補を暗号化してもEGEにはなりません。
解答・解説
正解はイです
この問題のテーマ
英字を番号に変え、文字の位置を加えて暗号化する手順を理解しているかを問う問題です。
解き方の考え方
図表ではAを0、Zを25として、1文字目には1、2文字目には2、3文字目には3を加えます。その数を26で割った余りを英字に戻します。各選択肢をこの順に変換し、「EGE」になるものを探します。
選択肢ごとの解説
- ×ア BEDBEDは番号にすると1、4、3です。位置の番号を加えると2、6、6となり、暗号化結果はCGGです。
- ○イ DEBDEBは番号にすると3、4、1です。3+1=4、4+2=6、1+3=4なので、暗号化結果はEGEとなり、正解です。
- ×ウ FIHFIHは番号にすると5、8、7です。位置の番号を加えると6、10、10となり、暗号化結果はGKKです。
- ×エ HIFHIFは番号にすると7、8、5です。位置の番号を加えると8、10、8となり、暗号化結果はIKIです。
補足
元の文字列を暗号文から逆算するときは、各文字の番号からその位置の番号を引きます。負の数になった場合は26を加えてから英字に戻せます。
POINT
- 英字の番号はAが0、Bが1というように数えます。
- 加える数は文字列の位置で決まり、1文字目から順に1、2、3と増えます。
- 加算後に26で割った余りを取り、その番号を英字に戻します。
