Hệ mật mã hóa caesar cipher: encode and decode online, caesar cipher: encode and decode online

  -  

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

Mã hóa tài liệu là quy trình che dấu dữ liệu thật (plaintext), tức thị chuyển dữ liệu thật thành dữ liệu không có ý nghĩa hoặc có chân thành và ý nghĩa khác xa với tài liệu thật. Các bước đó điện thoại tư vấn là mã hóa (encrytion). Kết quả của các bước gọi là bản mã (ciphertext). Trường đoản cú encrytion được tạo ra từ cryptography (mật mã) bắt nguồn từ tiếng Hi Lạp truyền thống Kryptos (Che dấu) cùng từ graphia (viết). Quá trình mã hóa dữ liệu có rứa được thực hiện bằng cách hoán vị dữ liệu thật hoặc sửa chữa thay thế chúng bằng dữ liệu khác.

Bạn đang xem: Hệ mật mã hóa caesar cipher: encode and decode online, caesar cipher: encode and decode online

Tiến trình ngược với quy trình mã hóa tức là chuyển từ bản mã thành dữ liệu ban đầu gọi là giải mã.

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à một trong những mật mã đơn giản và dễ dàng và được nghe biết nhiều nhất. Hệ mã Caesar là 1 hệ mã hóa thay thế đơn âm, làm việc trên bẳng vần âm tiếng Anh 26 ký tự. Đó là một trong những dạng của mật mã vậy thế, trong đó mỗi ký kết tự trong văn bạn dạng được sửa chữa thay thế bằng một ký tự phương pháp nó một quãng trong bảng vần âm để tạo ra thành bản mã.

Ví dụ:

Đối cùng với bảng mã tiếng anh (ABCDEFGHI...), giả dụ độ dịch là 3, A sẽ được thay bởi D, B sẽ được thay bởi E, ..., W đã thay bởi Z, X sẽ thay bằng A, Y vẫn thay bằng B cùng Z thay bởi C. Phương pháp được viết tên theo Caesar, vị nhà vua đã sử dụng nó liên tục trong công việc. Không gian bạn dạng rõ p là những từ cần được mà hóa được chế tác từ bảng chữ cái A. Không gian phiên bản rỏ C là những từ đã làm được mã hóa.


Để mã hóa, tín đồ ta đánh số những chữ cái từ 0N-1 (N là tổng số phần tử của bản chữ cái). Không gian khóa K=ZN. Với mỗi khóa K K hàm mã hóa và lời giải một cam kết tự bao gồm số máy tự là I sẽ được biểu diễn như sau:

a. Mã hóa : EK(i) = (i+k) hack Nb. Lời giải : DK(i) = (i-k) mod N

Trong đó:N = 26 trường hợp hệ mã Caesar thực hiện trên bảng vần âm tiếng Anh (nếu thực hiện trên bảng vần âm khác thì N sẽ gắng đổi). K : khớp ứng với số sản phẩm công nghệ tự chữ cái trong bảng mã (ví dụ : a = 0, b = 1 ....)

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

Tìm bạn dạng mã ? Theo bí quyết thay vào ta sẽ có hiệu quả sau.

Xem thêm: Yasuo Mùa 11: Bảng Ngọc Bổ Trợ, Cách Lên Đồ Yasuo Tank, Cách Lên Đồ, Bảng Ngọc Yasuo Tốc Chiến


*

Vậy bạn dạng mã là : YSMBYZWMIYREQ

Quá trình giải mã thì ngược lại với quá trình mã hóa.

Cài đặt

Mỗi ngôn ngữ khác biệt sẽ gồm cách cài đặt khác nhau. Mình sẽ sử dụng Python để thiết lập thuật toán:

Mặc định bạn có thể dụng bảng vần âm Tiếng Anh tuy thế trong phần thiết đặt này. Để thực tiễn hơn. Bản thân sẽ sử dụng bảng mã giờ 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 and 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 sẽ đọc kết thúc đống lý thuyết bên trên thì chắc chắn hẳn bạn sẽ không chạm chán khó khăn gì trong khúc code setup trên:


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

Trong đó:

self.key.index(l) : khớp ứng với in: khớp ứng với khóa klen(self.key): khớp ứng với độ lâu năm của phiên bản mã.2. Hàm giải mã

def decrypt(self, n, ciphertext): """Decrypt the string & 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 cùng với công thực giải mã. Ta cũng trở thành viết được hàm tương tự.

Xem thêm: Tổng Hợp Những Bài Văn Hay Lớp 6, Bài Văn Mẫu Lớp 6

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. ước ao rằng cả nhà em đừng gạch đã nhiều quá. Và gửi ra hồ hết góp ý nhiều hơn thế để em rất có thể vững trung ương trong quá trình tìm hiểu các hệ mã hóa


*

.

Mọi người nếu lười thiết lập cũng hoàn toàn có thể tham khảo links github bài em đã có tác dụng sẵn. Chỉ việc kéo về cùng chạy