Rate this post

Xin chào các bạn, hôm nay chúng ta sẽ đến với một chủ đề về code: Vigenère Schiffer.

Bạn đang xem: Vigenère Cipher: Encrypt And Decrypt Online

Phương pháp mã hóa Vigenère lần đầu tiên được Giovan Battista Bellaso nêu trong cuốn sách Hãy để số đi ra. sig. Giovan Battista Bellaso từ thế kỷ 16. Sau đó vào thế kỷ 19, Blaise de Vigenère đã công bố một phương pháp tương tự nhưng hiệu quả hơn, cái tên Vigenère được đặt cho hình vẽ này. Nhiều người cho rằng điều đó là không công bằng với người đã phát minh ra nó đầu tiên.

Nhưng thôi, tạm gác các vấn đề lịch sử sang một bên, chúng ta sẽ luôn đến với nội dung được mã hóa.

1. Vigenère Schiffer

tiền điện tử

Mật mã Vigenère là sự kết hợp xen kẽ của nhiều mật mã Caesar với các bước dịch khác nhau.

Nhắc lại một chút về mã hóa Caesar, đây là phương pháp mã hóa trong đó chúng ta chọn một giá trị khóa K và dịch các chữ cái trong vòng tròn theo các bước K. Ví dụ phổ biến nhất là K=13 thì:

Trong mã hóa Vigenère, ra sẽ sử dụng một bảng để dịch mã và một chuỗi khóa gọi là thiết bị truyền độngthay vì một con số như trong bảng mã của Caesar.

*

Ví dụ chúng ta có một chuỗi cần mã hóa như sau:

Xem thêm :   Kinh Nghiệm Du Lịch Thái Lan “Toàn Tập” Từ A Đến Z (Update Tháng 10/2022)

TẤN CÔNG

Và khóa dùng để mã hóa là “LEMON”. Đầu tiên chúng ta sẽ nhân chuỗi LEMON này sao cho nó có cùng độ dài với chuỗi cần mã hóa:

CHANH

Lúc này ta sẽ sử dụng bảng mã hóa như sau: bắt đầu từ trái qua phải, lấy ký tự khóa là HIỆN HÀNHký tự của chuỗi được mã hóa là cột và nhập vào bảng mã ta được một ký tự, ký tự đó là ký tự được mã hóa.

Áp dụng với khóa LEMONLEMONLE và chuỗi ATTACKATDAWN ở trên:

-> LỖI -> X -> F -> Ồ -> P -> VẼ -> E -> F -> MIỄN PHÍ -> NỮ -> BẠN BÈ -> MIỄN PHÍ
chúng tôi nhận được chuỗi LXFOPVEFRNHR. Đơn giản hay không?

giải mã

Để giải mã, chúng ta sẽ chỉ cần quay lại bảng mã. Bắt đầu từ trái sang phải, với mỗi chữ cái của phím HIỆN HÀNHchúng ta tìm thấy cột mà khi đảo ngược, chúng ta có giá trị của ký tự trong chuỗi được mã hóa. Ký tự trong cột đó là ký tự của chuỗi ban đầu.

Xem thêm: 20 điểm đến du lịch tuyệt vời nhất năm 2022 cho dân ‘đỏng đảnh’

ghi chú

Trên thực tế, bảng mã không bắt buộc phải là 26 ký tự alphabet mà có thể tùy chọn tùy theo bộ mã hóa, ví dụ sử dụng ký tự tiếng Việt, tiếng Nhật hay ký tự gì cũng được. Tuy nhiên, phương pháp mã hóa là không thay đổi.

Xem thêm :   Bài Giảng Tin Học Lớp 5 Khám Phá Computer

Mã số

rom itertools nhập chu trình VigenereCipher (đối tượng): def __init__(self, key, alphabet): self.key = key.decode(“utf-8”) self.alphabet = alphabet.decode(“utf-8”) def cipher( self, mode, str): return “”.join(self.alphabet if m in self.alphabet other m for m, k in zip(str.decode(“utf-8”), cycle(self.key))) .encode(“utf-8”) def encode(self, str): trả về self.digit(1, str) def giải mã(self, str): trả về self.digit(-1, str)

2. Khóa mật mã Vigenère tự động

Đối với mã Vigenère thông thường như trên ta sẽ lặp lại khóa để có độ dài bằng độ dài chuỗi cần mã hóa, theo đó ta chỉ cần dò bảng mã để lấy chuỗi mã hóa và giải mã. Tuy nhiên, để tăng độ khó của chuỗi mã hóa, người ta sử dụng một phương pháp khác gọi là khóa tự động Vigenère Cipher, trong đó chúng ta sẽ sử dụng khóa chỉ một lầnnối với chuỗi cần mã hóa để tạo khóa mới như sau:
Ta sẽ tiến hành mã hóa và giải mã như sau:

MÃ SỐ

Bước 1: Tách hoặc thêm khoảng trắng vào khóa nguồn để tạo thành hình dạng giống như chuỗi ban đầu. Ví dụ với “bí mật của tôi” thì ta cần tách “mật khẩu” thành “pa kiếm” Bước 2: Sau đó nối đoạn dây ban đầu và cắt có độ dài bằng với đoạn dây ban đầu. Ta được chuỗi khóa là “pa Sword myse c rec od eiwant” Bước 3: Đối chiếu với bảng mật mã và cho chuỗi mã hóa “by kwqihf aghg z atph ws aachkx”

dekodonin: Việc giải mã khó khăn hơn trước rất nhiều khi chỉ biết mỗi key, giờ phải cắt ghép từng bước để dần ra được chuỗi gốc:

Xem thêm :   Ý Nghĩa 8386 Là Gì? Tại Sao Nên Sở Hữu SIM Số 8386? - THPT Thanh Khê

Bước 1: Lưu ý rằng khoảng trắng trong chuỗi gốc và chuỗi được mã hóa giống nhau nên trong quá trình mã hóa, chúng ta tách hoặc thêm khoảng trắng trong khóa gốc để có hình dạng giống chuỗi. mã hóa, ta được “không kiếm” Bước 2: Đối chiếu với bảng mật mã ta được phần đầu của xâu ban đầu là “bí mật của tôi” Bước 3: Ghép xâu ban đầu tìm được với khóa, thêm dấu cách (khoảng trắng) cho phù hợp dạng chuỗi mã hóa, ta được “pa Sword myse c ret” Bước 4+: Lặp lại bước 2-3 cho đến hết chuỗi mã hóa, ta được chuỗi ban đầu là “mã bí mật tôi muốn” đảm bảo “

Mã số:

lớp VigenereAutokeyCipher: def __init__(self, key, abc): self.key = key self.abc = abc self.alle = len(abc) def cipher(self, s, m): đầu ra, keyarr = “”, list( self.key) cho char trong s: try: output += self.abc) % self.alle> keyarr.append((output, char)) ngoại trừ ValueError: đầu ra += char trả về đầu ra def encode(self, s): trả về self.digit(s, 1) def giải mã(self, s): trả về self.digit(s, 0)

Cảm ơn bạn đã đọc bài viết Giải Mã Vigenère Encoder – Vigenère Cipher: Encrypt And Decrypt Online . Đừng quên truy cập Chaolong TV kênh trực tiếp bóng đá số 1 Việt Nam hiện nay để có những phút giây thư giãn cùng trái bóng tròn !

By Chaolong TV

Chaolong TV trang web xem livestream bóng đá trực tiếp miễn phí tất cả các giải đấu hàng đầu thế giới. Xem bóng đá trực tiếp tốc độ cao chất lượng 4k, không quảng cáo, bình luận tiếng việt.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *