前回のプログラムでは、ずらす数字を変更した場合、テーブルの文字を全部書き換える必要があります。
今回はアルファベットに数字を対応させてみます。

#シーザー暗号

table = [["a",1],["b",2],["c",3],["d",4],["e",5],
["f",6],["g",7],["h",8],["i",9],["j",10],
["k",11],["l",12],["m",13],["n",14],["o",15],
["p",16],["q",17],["r",18],["s",19],["t",20],
["u",21],["v",22],["w",23],["x",24],["y",25],
["z",26],[" ",27]]

key = 3#文字をずらす数

a = "I love Ruby"

a = a.downcase

i = a.length

encryption = '暗号化した文='

for x in 0..(i-1) do
   count = 0
   while  table[count][0] != a[x].chr
        count += 1
   end   
   suzi = table[count][1]#アルファベットに対応する数字を取得
 
   crypt = (suzi + key) % 27#keyの値だけ数字をシフト
   #crypt = (suzi - key) % 27#復号化用
   encryption += table[crypt-1][0]#シフト先アルファベット取得#[crypt-1]で-1してるのは配列が0から始まるため
end
puts encryption

前回と今回のプログラムは以下のページを参考にさせて頂きました。
Tiny Basic for Windows
「Topページ」-「プログラムの背景」-「カエサル暗号」に詳しい説明があります。
「crypt = (suzi + (key)) % 27」の計算部分について説明があるので、お勧めです。

2024年4月
« 4月    
 123456
78910111213
14151617181920
21222324252627
282930  

カテゴリー

広告

現在の住まい、将来はVPSへ引越します。 ロリポップの上位版です。

広告

広告

最近のコメント

    広告

    Railsを動かす予定のVPS。無料キャンペーン中。

    広告