Mã hóa Caesar

Mã hóa Caesar (Xê da), còn gọi là mật mã dịch chuyển, là một trong những mật mã đơn giản và được biết đến nhiều nhất. Hệ mã Caesar là một hệ mã hóa thay thế đơn âm, làm việc trên bẳng chữ cái tiếng Anh 26 ký tự. Đó là một dạng của mật mã thay thế, trong đó mỗi ký tự trong văn bản được thay thế bằng một ký tự cách nó một đoạn trong bảng chữ cái để tạo thành bản mã.

Chẳng hạn nếu chìa khóa là +3 tức là xoay theo chiều thuận +3 ô thì các chữ cái A, B, C…X, Y, Z trong plaintext sẽ chuyển đến D, E, F …A, B, C trong ciphertext, từ HANOI trong plaintext được mã hóa thành từ KDQRL trong ciphertext. Người nhận sẽ giải mã bằng cách xoay ngược vành chữ ngoài -3 ô thì tìm lại được plaintext.

1. Mã hóa

Ci = (Pi + ki mod m) mod 26

Trong công thức Ci = (Pi + ki mod m) mod 26 , các biến có ý nghĩa như sau:

Ci: Ký tự mã hóa ở vị trí thứ i trong văn bản mã hóa.)
Pi: Ký tự cần mã hóa ở vị trí thứ i trong văn bản gốc.)
ki: Khóa hoặc "chìa khóa" sử dụng để mã hóa.)
m: Một giá trị hằng số (thường là kích thước của bảng mã hoặc tập hợp các ký tự có thể được mã hóa).)

Trong ví dụ sau muốn mã hóa một ký tự Pi bằng cách thêm một giá trị khóa ki vào nó, sau đó thực hiện toán tử mod m và cuối cùng mod 26 để đảm bảo kết quả nằm trong khoảng từ 0 đến 25 (vì có 26 chữ cái trong bảng chữ cái tiếng Anh).

Dưới đây là một ví dụ cụ thể:

Văn bản gốc: "HELLO")
Khóa ki: 3 (được chọn ngẫu nhiên))
Mỗi ký tự Pi trong "HELLO" sẽ được mã hóa bằng công thức Ci = (Pi + 3) mod 26.)

H (7 + 3) mod 26 = 10 (ký tự "K")
E (4 + 3) mod 26 = 7 (ký tự "H")
L (11 + 3) mod 26 = 14 (ký tự "O")
L (11 + 3) mod 26 = 14 (ký tự "O")
O (14 + 3) mod 26 = 17 (ký tự "R")

Do đó, khi mã hóa "HELLO" với khóa 3, ta sẽ nhận được "KHOOR" như là văn bản đã được mã hóa.

2. Giải mã

Pi = (Ci - ki mod m) mod 26

Trong công thức Pi = (Ci - ki mod m) mod 26, giữa các biến, ta có:

Pi: Ký tự gốc ở vị trí thứ i trong văn bản gốc.)
Ci: Ký tự đã được mã hóa ở vị trí thứ i trong văn bản mã hóa.)
ki: Khóa hoặc "chìa khóa" sử dụng để mã hóa.)
m: Một giá trị hằng số (thường là kích thước của bảng mã hoặc tập hợp các ký tự có thể được mã hóa).)

Dưới đây là một ví dụ cụ thể:

Văn bản mã hóa: "KHOOR")
Khóa ki: 3 (giả sử ta biết khóa đã được sử dụng))
Mỗi ký tự Ci trong "KHOOR" sẽ được giải mã bằng công thức Pi = (Ci - 3) mod 26.)

K (10 - 3) mod 26 = 7 (ký tự "H")
H (7 - 3) mod 26 = 4 (ký tự "E")
O (14 - 3) mod 26 = 11 (ký tự "L")
O (14 - 3) mod 26 = 11 (ký tự "L")
R (17 - 3) mod 26 = 14 (ký tự "O")

Do đó, khi ta giải mã "KHOOR" với khóa 3, sẽ nhận được "HELLO" như là văn bản đã giải mã.

3. Giải thích mã nguồn

Hàm mã hóa Ceasar

Hàm mã hóa này sẽ nhận một chuỗi đầu vào và một giá trị khóa. Tiếp theo nó chuyển toàn bộ chuỗi thành một mảng các ký tự, kiểm tra xem có kí tự nào là số hay không ( nếu là số thì giữ nguyên)
Xác định chữ cái là chữ hoa hay thường sau đó tính toán vị trí của chữ cái đó dựa theo bảng mã ASCII và chuyển chúng lại thành chuỗi

Hàm giải mã Ceasar

Hiểu đơn giản hàm mã hóa này sẽ lấy vị trí hiện tại của ký tự trừ đi giá trị khóa để quay lại giá trị ban đầu

Web hosting by Somee.com