Giải mã số ra chữ

     

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

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

Bạn đang xem: Giải mã số ra chữ

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

Hệ mã Caesar

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

Ví dụ:

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

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

a. Mã hóa : EK(i) = (i+k) thủ thuật Nb. Giải thuật : DK(i) = (i-k) hack N

Trong đó:N = 26 giả dụ hệ mã Caesar sử dụng trên bảng vần âm tiếng Anh (nếu thực hiện trên bảng chữ cái khác thì N sẽ vắt đổ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ụ sau:Cho phiên bản rõ : TOIYEUVIETNAM Khóa k = 4

Tìm bản mã ? Theo cách làm thay vào ta đã có hiệu quả sau.

Xem thêm: Tự Nhuộm Tóc Màu Nâu Đỏ Có Cần Tẩy Tóc Không Cần Tẩy Hot Trend Đẹp Và Nổi Nhất

*

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

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

Cài đặt

Mỗi ngôn ngữ khác nhau sẽ tất cả cách thiết đặt khác nhau. Mình sẽ áp dụng Python để cài đặt thuật toán:

Mặc định bạn có thể dụng bảng chữ cái Tiếng Anh cơ mà trong phần thiết đặt này. Để thực tế 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 và 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 hoàn thành đống lý thuyết trên thì chắc chắn hẳn bạn sẽ không gặp mặt 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) : tương ứng với in: tương ứng với khóa klen(self.key): tương xứng với độ nhiều năm của bạn dạng 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ở nên viết được hàm tương tự.

Xem thêm: Suy Nghĩ Về Lòng Dũng Cảm - Nghị Luận Về Lòng Dũng Cảm (20 Mẫu)

3. Hotline 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 muốn rằng anh chị em đừng gạch đã những quá. Và chuyển ra hầu hết góp ý nhiều hơn để em rất có thể vững vai trung phong trong thừa trình tìm hiểu các hệ mã hóa .

Mọi tín đồ nếu lười cài đặt cũng hoàn toàn có thể tham khảo liên kết github bài xích em đã có tác dụng sẵn. Chỉ câu hỏi kéo về và chạy https://github.com/tuanquanghpvn/cipher