広告スペース(バナー)
💎Ruby レッスン
基本文法の基礎8▾
データ構造とオブジェクト指向7▾
構文の基本を深める9▾
関数とデータ構造の応用9▾
アルゴリズムとテストの基礎8▾
文字列・数値操作の応用8▾
実務で役立つ機能8▾
レッスン 34 / 68
シーザー暗号を作ってみよう(文字のシフト暗号)
このレッスンでは、シーザー暗号という古典的な暗号を実装しながら、文字コードを使った文字列操作の練習をすることを目標にします。「Ruby 暗号化 実装」で調べている方向けの内容です。
シーザー暗号は、アルファベットを決まった数だけずらして別の文字に置き換える、古代ローマ発祥のシンプルな暗号です。「50音を3つずつずらして話す暗号ごっこ」のようなイメージです。現代の暗号技術に比べると非常に単純ですが、文字コードの計算という基本操作を練習するのにちょうどよい題材です。
サンプルコードでは、.gsub(/[A-Z]/)という正規表現とブロックを組み合わせて、英大文字だけを対象にシフト処理を行っています。.ordで文字を数値(文字コード)に変換し、計算してからまた.chrで文字に戻す、という流れがポイントです。
初心者がよくつまずくのが、gsubにブロックを渡す書き方です。gsubは通常置換後の文字列を指定しますが、ブロックを渡すことで、一致した部分ごとに動的に処理を変えられる、より柔軟な使い方ができます。
アルファベット以外の文字はそのまま出力するよう工夫している点にも注目してみましょう。現代の暗号技術の入り口として、仕組みそのものを手を動かして体験してみましょう。
📖 お手本コード
✍️ あなたのコード
コードを書いたら「実行する」を押してください
🧪 このサイトではRubyを直接コンパイル・実行できないため、お手本コードと同じ内容を入力できたかをその場で判定します(採点はブラウザ内だけで行われ、どこにも送信されません)。
🎯
ここまでできればゴール達成!
簡単な暗号化・復号化ができる、シーザー暗号ツールが作れるようになります。
簡単な暗号化・復号化ができる、シーザー暗号ツールが作れるようになります。
広告スペース(バナー)
広告スペース(記事内)