広告スペース(バナー)
🐹Go レッスン
基本文法の基礎8
データ構造とオブジェクト指向7
構文の基本を深める9
関数とデータ構造の応用9
アルゴリズムとテストの基礎8
文字列・数値操作の応用8
実務で役立つ機能8
アルゴリズム練習問題10
レッスン 34 / 68

シーザー暗号を作ってみよう(文字のシフト暗号)

このレッスンでは、Goでシーザー暗号を実装する方法を学び、文字をずらして暗号化する仕組みの基本を理解することを目標にします。「Go言語 シーザー暗号 実装」で調べている方向けです。

シーザー暗号は、アルファベットを決まった数だけずらして別の文字に置き換える、古代ローマ発祥のシンプルな暗号です。「50音を3つずつずらして話す暗号ごっこ」のようなイメージです。

サンプルコードでは、[]rune(text)で文字列をrune型のスライスに変換し、アルファベットの範囲かどうかを確認しながら'A' + (c-'A'+rune(shift))%26という計算でずらした文字を求めています。Goでは日本語のような文字も正しく扱うためにrune型を使うのが基本です。

初心者がよくつまずくのが、バイト単位の[]byteと文字単位の[]runeの違いです。バイト単位で扱う[]byteではマルチバイト文字が崩れてしまうため、runeを使うのがGoで文字を正しく扱う基本になります。

シーザー暗号自体は単純すぎて実際のセキュリティには使われませんが、文字コードを操作する考え方は、より高度な暗号化やエンコード処理の基礎になります。

📖 お手本コード
✍️ あなたのコード
コードを書いたら「実行する」を押してください

🧪 このサイトではGoを直接コンパイル・実行できないため、お手本コードと同じ内容を入力できたかをその場で判定します(採点はブラウザ内だけで行われ、どこにも送信されません)。

🎯
ここまでできればゴール達成!
簡単な暗号化・復号化ができる、シーザー暗号ツールが作れるようになります。
広告スペース(バナー)
広告スペース(記事内)