0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rubyでシーザー暗号のプログラムを実装

Last updated at Posted at 2022-05-25

Rubyでシーザー暗号のプログラムを作りました。

補足

  • まだ暗号化するだけの処理です。
  • 英大文字のみ対応です。
  • スペースなどは考慮していません。

シーザー暗号とは

平文の各文字を辞書順にずらして暗号文にする暗号です。


プログラム

def caesar_cipher(string = "ABC", shift = 3)
  charArray = string.chars.map(&:ord)

  charArray.map do |char|
    if (char + shift) < 91
      (char + shift).chr
    else
      (char + shift - 26).chr
    end
  end.join
end

puts caesar_cipher
処理の流れ
  1. 暗号化したい文字列を用意する
  2. 文字列を1文字ずつに分ける
  3. 分けた文字を文字コードに変換する
  4. 任意の数分だけ文字コードを辞書順にずらす
  5. 得られた文字コードを文字に戻す
  6. 1つの文字列に結合して暗号文とする

終わりに

charArray.mapに渡しているブロックの終わりにjoinで繋げるのは新しい発見でした。でも可読性の低下と、バグの原因になりそうなのであまり多用しないほうがいい気がします。
それにしても文字コードの操作は「プログラムを組んでる」という感じが強くて面白いですね。


参考

0
0
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?