Mật mã chuyển vị

Mật mã chuyển vị là một thuật toán mật mã trong đó thứ tự của các bảng chữ cái trong bản rõ được sắp xếp lại để tạo thành một văn bản mật mã. Trong quá trình này, các bảng chữ cái văn bản thuần túy thực tế không được bao gồm.

Thí dụ

Một ví dụ đơn giản cho mật mã chuyển vị là columnar transposition ciphertrong đó mỗi ký tự trong văn bản thuần túy được viết theo chiều ngang với chiều rộng bảng chữ cái được chỉ định. Mật mã được viết theo chiều dọc, điều này tạo ra một văn bản mật mã hoàn toàn khác.

Xem xét văn bản thuần túy hello worldvà chúng ta hãy áp dụng kỹ thuật chuyển vị cột đơn giản như hình dưới đây

Các ký tự văn bản thuần túy được đặt theo chiều ngang và văn bản mật mã được tạo với định dạng dọc như : holewdlo lr. Bây giờ, người nhận phải sử dụng cùng một bảng để giải mã văn bản mật mã thành văn bản thuần túy.

Đoạn mã chương trình sau đây trình bày cách triển khai cơ bản của kỹ thuật chuyển vị cột -

def split_len(seq, length):
   return [seq[i:i + length] for i in range(0, len(seq), length)]
def encode(key, plaintext):
   order = {
      int(val): num for num, val in enumerate(key)
   }
ciphertext = ''

for index in sorted(order.keys()):
   for part in split_len(plaintext, len(key)):
      try:ciphertext += part[order[index]]
         except IndexError:
            continue
   return ciphertext
print(encode('3214', 'HELLO'))

Giải trình

  • Sử dụng chức năng split_len(), chúng ta có thể tách các ký tự văn bản thuần túy, có thể được đặt ở định dạng cột hoặc hàng.

  • encode phương pháp này giúp tạo văn bản mật mã với khóa chỉ định số cột và in văn bản mật mã bằng cách đọc các ký tự qua mỗi cột.

Đầu ra

Mã chương trình để thực hiện cơ bản của kỹ thuật chuyển vị cột cho kết quả sau:

Note- Các nhà phân tích mật mã đã quan sát thấy sự cải thiện đáng kể trong bảo mật tiền điện tử khi kỹ thuật chuyển vị được thực hiện. Họ cũng lưu ý rằng việc mã hóa lại văn bản mật mã bằng cách sử dụng cùng một mật mã chuyển vị sẽ tạo ra sự bảo mật tốt hơn.