Mật mã caesar

     

Khái niệm mã hóa tài liệu và giải mã

Mã hóa dữ liệu là tiến trình bịt lốt tài liệu thật (plaintext), tức là gửi dữ liệu thiệt thành tài liệu không tồn tại ý nghĩa hoặc tất cả ý nghĩa không giống xa cùng với dữ liệu thật. Tiến trình đó hotline là mã hóa (encrytion). Kết trái của tiến trình Điện thoại tư vấn là bạn dạng mã (ciphertext). Từ “encrytion” được tạo nên trường đoản cú “cryptography” (mật mã) xuất phát từ giờ Hi Lạp cổ xưa “Kryptos” (Che dấu) và từ bỏ “graphia” (viết). Tiến trình mã hóa dữ liệu gồm nạm được thực hiện bằng phương pháp hoán thù vị tài liệu thiệt hoặc thay thế bọn chúng bằng dữ liệu không giống.

Bạn đang xem: Mật mã caesar

Tiến trình ngược với các bước mã hóa có nghĩa là đưa tự bản mã thành dữ liệu ban sơ điện thoại tư vấn là lời giải.

Hệ mã Caesar

Trong mật mã học, mật mã Caesar (Xê da), có cách gọi khác là mật mã dịch chuyển, là 1 Một trong những mật mã dễ dàng và đơn giản và được biết đến nhiều độc nhất. Hệ mã Caesar là một trong những hệ mã hóa sửa chữa thay thế 1-1 âm, thao tác bên trên bẳng chữ cái giờ Anh 26 cam kết từ bỏ. Đó là 1 dạng của mật mã thay thế sửa chữa, trong các số ấy mỗi cam kết tự trong văn uống bạn dạng được sửa chữa bởi một cam kết từ bỏ phương pháp nó một đoạn trong bảng chữ cái nhằm sinh sản thành bản mã.

Ví dụ:

Đối với bảng mã tiếng anh (ABCDEFGHI...), ví như độ dịch là 3, A sẽ tiến hành nỗ lực bằng D, B sẽ tiến hành cố kỉnh bằng E, ..., W đang cố bởi Z, X đang thế bởi A, Y đã thay bởi B với Z vắt bằng C.Phương thơm pháp được đặt tên theo Caesar, vị hoàng đế đang thực hiện nó tiếp tục trong các bước.Không gian bạn dạng rõ Phường là những trường đoản cú rất cần được cơ mà hóa được sản xuất trường đoản cú bảng vần âm A. Không gian bản rỏ C là các tự đã có được mã hóa.

Để mã hóa, bạn ta đánh số các chữ cái từ 0N-1 (N là tổng cộng bộ phận của bạn dạng chữ cái). Không gian khóa K=ZN. Với mỗi khóa K  K hàm mã hóa và giải thuật một ký từ bỏ bao gồm số vật dụng tự là I sẽ được màn biểu diễn nlỗi sau:

a. Mã hóa : EK(i) = (i+k) gian lận Nb. Giải mã : DK(i) = (i-k) mod N

Trong đó:N = 26 giả dụ hệ mã Caesar sử dụng trong bảng vần âm giờ đồng hồ Anh (ví như áp dụng trên bảng vần âm không giống thì N sẽ cầm cố đổi).k : khớp ứng với số thiết bị tự chữ cái trong bảng mã (ví dụ : a = 0, b = 1 ....)

Xét ví dụ sau:Cho bản rõ : TOIYEUVIETNAM Khóa k = 4

Tìm bạn dạng mã ? Theo phương pháp cố vào ta sẽ có được kết quả sau.

Xem thêm: Truyện Kể Mầm Non Truyện Kể Giấc Mơ Kỳ Lạ, Giấc Mơ Kỳ Lạ

*

Vậy bản mã là : YSMBYZWMIYREQ

Quá trình giải thuật thì ngược trở lại với quy trình mã hóa.

Cài đặt

Mỗi ngôn ngữ không giống nhau sẽ có cách setup khác nhau. Mình đã thực hiện Pykhiêm tốn nhằm setup thuật toán:

Mặc định chúng ta cũng có thể dụng bảng vần âm Tiếng Anh mà lại trong phần thiết đặt này. Để thực tế rộng. Mình đã thực hiện bảng mã Tiếng Việt.

1. Bảng mã

key = "aáàạảãăắằặẳẵâấầậẩẫbcdđeéẹẻẽêếềệểễfghiíìịỉĩjklmnoóòọỏõôốồộổỗơớờợởỡpqrstuúùụủũưứừựửữvwxyýỳỵỷỹAÁÀẠẢÃĂẮẰẶẲẴÂẤẦẬẨẪBCDĐEÉẸẺẼÊẾỀỆỂỄFGHIÍÌỊỈĨJKLMNOÓÒỌỎÕÔỐỒỘỔỖƠỚỜỢỞỠPQRSTUÚÙỤỦŨƯỨỪỰỬỮVWXYÝỲỴỶỸ0123456789`#$%^&*()"1. Hàm mã hóadef encrypt(self, n, plaintext): """Encrypt the string & return the ciphertext""" result = "" for l in plaintext: try: i = (self.key.index(l) + n) % len(self.key) result += self.key except ValueError: result += l return resultNếu đang hiểu chấm dứt gò định hướng bên trên thì chắc hẳn các bạn sẽ không gặp trở ngại gì trong khúc code setup trên:

Mã hóa : EK(i) = (i+k) mod N

Trong đó:

self.key.index(l) : tương ứng với in: tương xứng cùng với khóa klen(self.key): tương xứng với độ dài của bạn dạng mã.2. Hàm giải mã

def decrypt(self, n, ciphertext): """Decrypt the string và return the plaintext""" result = "" for l in ciphertext: try: i = (self.key.index(l) - n) % len(self.key) result += self.key except ValueError: result += l return resultÁp dụng với công thực giải thuật. Ta cũng trở thành viết được hàm tựa như.

Xem thêm: Berita Dan Informasi Cortana Là Gì? Cách Sử Dụng Cortana Trên Windows 10

3. Điện thoại tư vấn hàm

def show_result(self, plaintext, n): """Generate a resulting cipher with elements shown""" encrypted = self.encrypt(n, plaintext) decrypted = self.decrypt(n, encrypted) print("Rotation: ", n) print("Plaintext: ", plaintext) print("Encrytped: ", encrypted) print("Decrytped: ", decrypted)

Tài liệu

Đến đây nội dung bài viết phần đầu về mã hóa cũng kết thúc. Mong rằng anh người mẹ chớ gạch men vẫn các quá. Và đưa ra đều góp ý nhiều hơn nhằm em có thể vững trung khu vào quá trình khám phá các hệ mã hóa .

Mọi bạn nếu như lười thiết lập cũng có thể xem thêm link github bài xích em đã làm cho sẵn. Chỉ câu hỏi kéo về cùng chạy https://github.com/tuanquanghpvn/cipher


Chuyên mục: Tin Tức
12Bet Mobile