Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Ruby

Tự Tạo Caesar Cipher Encoder: Hướng Dẫn Bước Đi Bước

Bạn đã nghe về Caesar cipher chưa? Julius Caesar dùng kỹ thuật này để giấu tin nhắn bí mật!

Caesar cipher là kỹ thuật mã hóa nguyên thủy nhất. Ý tưởng chính: xoay vòng các chữ cái một số vị trí trên bảng chữ cái.

Ví dụ với x = 1: 'A' thành 'B', 'C' thành 'D', v.v.

Tự Tạo Caesar Cipher Encoder: Hướng Dẫn Bước Đi Bước

Tự Tạo Caesar Cipher Converter

Chuyển chuỗi đầu vào thành mảng số nguyên (ASCII):

ascii = "test".chars.map(&:ord)

Phân tích:

  • chars tách chuỗi thành mảng ký tự, trả về enumerator
  • map biến đổi từng phần tử, trả về mảng mới
  • ord trả về mã ASCII của ký tự

Tương đương (Ruby 1.9+):

ascii = "test".chars.map { |c| c.ord }

Kết quả: [116, 101, 115, 116]

Thời Gian Xoay Vòng (Rotation)

Cộng số vị trí xoay vào mỗi mã ASCII:

shifted = ascii.map { |c| c + 5 }  # => [121, 106, 120, 121]

Chuyển ngược số thành ký tự và nối chuỗi:

shifted.map { |c| c.chr }.join  # => "yjxy"

Để giải mã, làm ngược lại: xoay trái cùng số vị trí.

Code Hoàn Chỉnh & Phiên Bản Thay Thế

Code đầy đủ tại đây - sinh ra 26 lần lặp cho chuỗi cho trước và xử lý wrapping (vòng quay).

Có phiên bản thay thế dùng Array#rotate.

Có thể bạn thích: Ruby string formatting