Mã hóa dữ liệu trong Python (phần 3)

Mã hóa dữ liệu trong Python (tiếp tục)

Mặc dù nó làm việc khá hợp lí trong thời cổ, một Caesar cipher sẽ không khớp cho một điệp viên có năng lực với
một máy tính. Giả định rằng có 128 kí tự ASCII, tất cả cái bạn phải làm là viết một chương trình cái sẽ chạy
cùng dòng text qua script giải mã mở rộng với các giá trị từ 0 đến 127 cho đến khi một plaintext có nghĩa được
trả về. Nó sẽ mất ít hơn một giây để làm cái đó trên hầu hết các máy tính hiện đại. Nhược điểm chính của chiến
lược mã hóa này là rằng plaintext được mã hóa một kí tự một lần, và mỗi kí tự mã hóa phụ thuộc vào kí tự đơn đó
và một giá trị khoảng cách cố định. Theo một nghĩa, cấu trúc của text gốc được bảo tồn trong cipher text, nên nó
có thể là khó để khám phá một key bằng thẩm tra bằng mắt.
Một kế hoạch mã hóa tinh vi hơn được gọi là một block cipher. Một block cipher sử dụng các kí tự plaintext để tính
toán hai hay nhiều hơn các kí tự mã hóa. Cái này được hoàn thành bằng cách sử dụng một cấu trúc toán học được biết
đến như là một ma trận nghịch đảo để quyết định các giá trị của các kí tự mã hóa. Ma trận cung cấp key trong phương
pháp này. Cái nhận sử dụng cùng ma trận để giải mã cipher text. Thực tế rằng thông tin sử dụng để quyết định mỗi kí
tự đến từ một khối dữ liệu làm nó khó hơn để quyết định key. Chúng ta sẽ khám phá việc sử dụng block cipher để mã
hóa text trong các học phần sau, nơi chúng tôi giới thiệu một dạng dữ liệu lưới.

Chia sẻ