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

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

このレッスンでは、シーザー暗号という古典的な暗号を実装しながら、文字コードを使った文字列操作の練習をすることを目標にします。「JavaScript 暗号化 実装」「文字コード charCodeAt 使い方」で調べている方向けです。

シーザー暗号は、アルファベットを決まった数だけずらして別の文字に置き換える、古代ローマ発祥のシンプルな暗号です。「50音を3つずつずらして話す暗号ごっこ」のようなイメージです。.charCodeAt()で文字を数値(文字コード)に変換し、計算してからまたString.fromCharCode()で文字に戻す、という流れで実装します。

サンプルコードでは、.replace()と正規表現/[A-Z]/gを組み合わせて、英大文字だけを対象にシフト処理を行っています。文字コードにshiftを加えたあと% 26で26文字の範囲に収める計算がポイントで、Zの次にAへ戻るような「ぐるっと一周する」計算を実現しています。

現代の暗号技術に比べると非常に単純で解読も容易ですが、文字コードの計算という、プログラミングの基本操作を練習するのにちょうどよい題材です。初心者がつまずきやすいのは、文字コードの計算の際にアルファベット以外の文字(記号やひらがな)まで一緒にずらしてしまうミスで、対象範囲を正しく絞り込む必要があります。

現代の暗号技術の入り口として、仕組みそのものを手を動かして体験してみましょう。実際のセキュリティ分野では、こうした古典暗号よりもはるかに複雑な数学的仕組みが使われていますが、「文字を数値として扱い計算する」という発想は、より高度な暗号技術を学ぶ土台にもなります。

JavaScript
OUTPUT / 実行結果

💡 console.log() の内容が実行結果に表示されます。

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