Bài 10: Mật mã cổ điển – Mã hoá Caesar – Blog Nam Phạm

Mật mã Caesar (hay còn được gọi là Mật mã của Caesar, Mật mã chuyển vị, Mã của Caesar hay Chuyển vị Caesar) là một trong những kỹ thuật mã hóa đơn giản và phổ biến nhất. Đây là một dạng mật mã thay thế, trong đó mỗi ký tự trên văn bản thô sẽ được thay bằng một ký tự khác, có vị trí cách nó một khoảng xác định trong bảng chữ cái.

Cũng giống như toàn bộ những dạng mật mã sửa chữa thay thế một bảng vần âm khác, mật mã Caesar rất dễ bị phá giải và về cơ bản không cung ứng đủ năng lực bảo mật thông tin thông tin liên lạc trong đời sống tân tiến .
Mã hoá caesar bằng cách thay thế các ký tựMã hoá caesar bằng cách thay thế các ký tự

Ví dụ về mật mã Caesar

Mã hoá caesar bằng cách thay thế các ký tự trong bản rõ bằng ký tự đứng sau nó ${\displaystyle k}$ vị trí trong bảng chữ cái. Giả sử ${\displaystyle k=3}$, ta có bảng chuyển đổi như sau:

Bảng đánh số các chữ cái tiếng Anh

Giả sử ta có bản rõ: TOIYEUVIETNAM

Như vậy, bản mã chiếu theo bảng chuyển đổi kia sẽ là: WRLBHXYLHWQDP

Để giải thuật, ta triển khai ngược lại bằng cách chuyển dời từng kí tự của bản mã lùi về $ { \ displaystyle k } $ vị trí .

Tổng quát về mã hoá Caesar

Về tổng quát, Hệ mã Caesar dùng bảng chữ cái tiếng Anh với 26 (${\displaystyle n=26}$) chữ cái, được đánh số:

Bảng dịch mã Caesar Z26
Phương pháp mã hóa Ceasar được màn biểu diễn như sau :
Sơ đồ hệ mật mã : $ { \ displaystyle S = ( P., C, K, E, D ) } $ .
Trong đó $ { \ displaystyle P = C = K = Z_ { 26 } } $, với mỗi khóa USD { \ displaystyle k \ in K } $ hàm mã hóa một ký tự $ { \ displaystyle x_ { i } \ in P } $ và hàm giải thuật một ký tự $ { \ displaystyle y_ { i } \ in C } $ xác lập theo công thức :
Mã hóa : $ { \ displaystyle y_ { i } = e_ { K } ( x_ { i } ) = ( x_ { i } + k ) { \ pmod { n } } } $ ( n = 26 )
Giải mã : $ { \ displaystyle x_ { i } = d_ { K } ( y_ { i } ) = ( y_ { i } – k ) { \ pmod { n } } } $ ( n = 26 )

Ví dụ và Cài đặt thuật toán mã hoá Caesar

Bài tập ví dụ

Câu 1 : Cho $ { \ displaystyle k = 17 } $, Bản rõ $ { \ displaystyle ATTACK } USD. Hãy thực thi mã hóa bằng Caesar theo $ { \ displaystyle Z_ { 26 } } $ .
Đầu tiên, ta màn biểu diễn bản rõ theo modulo 26 : $ { \ displaystyle X = ATTACK = ( 0, 19, 19, 0, 2, 10 ) } $
Dùng thuật toán mã hóa với $ { \ displaystyle k = 17 } $ ta có :
USD { \ displaystyle y_ { 1 } = e_ { K } ( x_ { 1 } ) = ( x_ { 1 } + k ) { \ pmod { n } } = ( 0 + 17 ) { \ pmod { 26 } } = 17 } $

${\displaystyle y_{2}=e_{K}(x_{2})=(x_{2}+k){\pmod {n}} = (19+17) {\pmod {26}} = 10}$

Tương tự :
USD { \ displaystyle y_ { 3 } = ( x_ { 3 } + k ) { \ pmod { n } } = ( 19 + 17 ) { \ pmod { 26 } } = 10 } USD
USD { \ displaystyle y_ { 4 } = 17 } $, $ { \ displaystyle y_ { 5 } = 19 } $, $ { \ displaystyle y_ { 6 } = 1 } $
Bản mã : $ { \ displaystyle Y = ( 17, 10, 10, 17, 19, 1 ) = RKKRTB } $

Câu 2 : Cho $ { \ displaystyle k = 12 } $, cho bản mã $ { \ displaystyle Y = ZAFTUZSUYBAEEUNXQ } $. Giải mã tài liệu và cho ra bản rõ theo mã dịch vòng Caesar
Biểu diễn bản mã theo $ { \ displaystyle Z_ { 26 } } $ :
USD { \ displaystyle Y = ZAFTUZSUYBAEEUNXQ = ( 25, 0, 5, 19, 20, 25, 18, 20, 24, 1, 0, 4, 4, 20, 13, 23, 16 ) } $
Dùng thuật toán giải thuật $ { \ displaystyle x_ { i } = d_ { K } ( y_ { i } ) = ( y_ { i } – k ) { \ pmod { n } } } $
USD { \ displaystyle x_ { 1 } = d_ { K } ( y_ { 1 } ) = ( y_ { 1 } – k ) { \ pmod { n } } = ( 25-12 ) { \ pmod { 26 } } = 13 \ to N } $

${\displaystyle x_{2}=(0-12) {\pmod {26}} = 14 \to O}$ ${\displaystyle x_{3}=(5-12) {\pmod {26}} = 19 \to T}$
${\displaystyle x_{4}=7 \to H}$ ${\displaystyle x_{5}=8 \to I}$
${\displaystyle x_{6}=13 \to N}$ ${\displaystyle x_{7}=6 \to G}$
${\displaystyle x_{8}=8 \to I}$ ${\displaystyle x_{9}=12 \to M}$
${\displaystyle x_{10}=15 \to P}$ ${\displaystyle x_{11}=14 \to O}$
${\displaystyle x_{12}=18 \to S}$ ${\displaystyle x_{13}=18 \to S}$
${\displaystyle x_{14}=8 \to I}$ ${\displaystyle x_{15}=1 \to B}$
${\displaystyle x_{16}=11 \to L}$ ${\displaystyle x_{17}=4 \to E}$

Bản rõ : X = NOTHING IMPOSSIBLE

Cài đặt chương trình mã hoá Caesar

Chương trình trực tuyến : https://onlinegdb.com/1QfWGJOiS

// A C++ program to illustrate Caesar Cipher Technique
#include 
using namespace std;

// This function receives text and shift and
// returns the encrypted text
string encrypt(string text, int s)
{
	string result = "";

	// traverse text
	for (int i=0;i

Xem thêm cách thiết lập trên những ngôn từ khác : https://www.geeksforgeeks.org/caesar-cipher-in-cryptography/

Thám mã Caesar

Thám mã Caesar khá đơn giản. Xét 2 tình huống:

  1. Người thám mã biết (đoán) rằng đây là một dạng mã hoá thay thế cơ bản nhưng không biết cụ thể nó là Caesar.
  2. Người thám mã biets chính xác mật mã Caesar được sử dụng.

Dù trong tình hướng nào, việc thám mã với hệ mật này cũng khá đơn thuần .
Trong trường hợp tiên phong, mật mã hoàn toàn có thể phá giải bằng những chiêu thức tựa như như so với những dạng mật mã thay thế sửa chữa đơn thuần nói chung, ví dụ điển hình như nghiên cứu và phân tích tần suất hay nghiên cứu và phân tích những từ mẫu. [ 16 ] Khi nghiên cứu và phân tích, có năng lực người giải thuật sẽ nhanh gọn nhận thấy tính quy tắc trong giải pháp thay thế sửa chữa và suy ra rằng kỹ thuật mã hóa được dùng là mật mã Caesar .

Trong trường hợp thứ hai, việc làm giải thuật thậm chí còn còn nhẹ nhàng hơn. Vì số khóa mã có năng lực được sử dụng là số lượng giới hạn ( 25 khóa mã so với bảng vần âm tiếng Anh ), mỗi khóa mã hoàn toàn có thể được kiểm tra lần lượt bằng kiểu tiến công vét cạn. Một cách để thực thi là thử giải một đoạn trích nhỏ của bản mật mã với toàn bộ những khóa mã hoàn toàn có thể, và viết lên trên một bảng, đôi lúc gọi là “ giải thuật một phần bản thô ” .

Bài tập

  1. Giải mã bản mã sau, giả sử mã hóa Caesar được sử dụng để mã hóa với k=3: IRXUVFRUHDQGVHYHQBHDUVDJR
  2. Phá mã bản mã sau, giả sử mã hóa Caesar được sử dụng: CSYEVIXIVQMREXIH
  3. Hãy giải mã bản mã được mã hóa bằng hệ mã Caesar sau (sử dụng bảng mã tiếng Anh): WKXPEVXS
  4. Bản rõ “HELPME” được mã hóa thành bản mã “DAHLIA”. Hãy tìm K biết bản mã được hình thành theo Caesar thuộc Z26
  5. Viết chương trình mã hóa và giải mã một file văn bản ASCII trên máy tính bằng phương pháp mã hóa Caesar.

Bài 10: Mật mã cổ điển – Mã hoá Caesar – Blog Nam Phạm

Bài viết liên quan
Hotline 24/7: O984.666.352
Alternate Text Gọi ngay