/ / Cách mã hóa và giải mã tin nhắn bằng Base64 và Python

Cách mã hóa và giải mã tin nhắn bằng Base64 và Python

Mô-đun Base64 của Python là một công cụ mạnh mẽ để mã hóa và giải mã tin nhắn. Bạn có thể sử dụng nó để gửi dữ liệu an toàn qua internet. Đó là quy trình chuẩn cho các trang web, ứng dụng và dịch vụ liên lạc sử dụng loại mã hóa này để bảo vệ dữ liệu nhạy cảm khỏi tin tặc thù địch.


Mô-đun Base64 có một cặp chức năng mà bạn có thể sử dụng để mã hóa và giải mã tin nhắn, bổ sung thêm một số bảo mật cho quá trình truyền dữ liệu của bạn.


Mô-đun Tkinter và Base64

Tkinter cho phép bạn tạo các ứng dụng máy tính để bàn. Nó cung cấp nhiều tiện ích như nút, nhãn và hộp văn bản giúp dễ dàng phát triển ứng dụng mà không tốn quá nhiều công sức. Bạn có thể tạo các chương trình GUI đáng kinh ngạc với Tkinter. Bạn có thể tạo một máy tính đơn giản, ứng dụng danh sách việc cần làm hoặc trò chơi kiểm tra đánh máy. Để cài đặt Tkinter vào hệ thống của bạn, hãy mở thiết bị đầu cuối của bạn và gõ:

 pip install tkinter 

BASE64 cung cấp các chức năng để mã hóa dữ liệu nhị phân sang ASCII giải mã chúng trở lại nhị phân. Nó hỗ trợ cả mã hóa tiêu chuẩn và mã hóa an toàn URL giúp truyền thông tin an toàn hơn. Để chuyển đổi một chuỗi thành ký tự Base64, hãy lấy giá trị ASCII của từng ký tự và tính toán nhị phân 8 bit của nó. Chuyển đổi đoạn 6 bit này bằng cách nhóm lại các chữ số và chuyển đổi lại chúng thành các giá trị thập phân tương ứng. Cuối cùng, sử dụng bảng mã hóa Base64 để nhận các giá trị Base64 cho mỗi số thập phân.

Cách mã hóa và giải mã tin nhắn trong Python

Bắt đầu bằng cách nhập cả hai mô-đun. Khởi tạo phiên bản Tkinter và hiển thị cửa sổ gốc. Đặt tiêu đề, kích thước tính bằng pixel và màu nền của cửa sổ.

 from tkinter import *
import base64

root = Tk()
root.geometry('750x400')
root.configure(background='aqua')
root.title("Encode and Decode Messages Using Python")

Sử dụng tiện ích Nhãn để hiển thị thông tin hữu ích về ứng dụng. Nhãn chấp nhận cửa sổ chính mà bạn muốn đặt nó vào, văn bản mà nó sẽ hiển thị, kiểu phông chữ, màu sắc và màu nền. Sử dụng đóng gói() để sắp xếp tiện ích con trong một khối bố cục trước khi đặt nó vào tiện ích mẹ. StringVar giúp kiểm soát giá trị của tiện ích con như Nhãn hoặc Mục nhập dễ dàng hơn.

 Label(root, text='Python Message Encoder and Decoder', font='arial 25 bold', fg='white', bg="purple").pack()
Text = StringVar()
key = StringVar()
mode = StringVar()
Result = StringVar()

Xác định một chức năng mã hóa() chấp nhận một khóa để mã hóa và giải mã cùng với tin nhắn. Xác định một danh sách trống và lặp lại cho đến hết độ dài của tin nhắn. Đặt chỉ mục của khóa làm mô đun của phép toán và lưu trữ giá trị của nó trong biến key_c. Sử dụng thứ tự() để lấy giá trị Unicode của ký tự và sử dụng chr() để lấy ký tự đại diện cho giá trị đã chỉ định.

Nối giá trị này vào danh sách. Tham gia mỗi phần tử của danh sách với một chuỗi rỗng và sử dụng mã hóa() để trả về phiên bản được mã hóa utf-8 của chuỗi. Các cơ sở64.urlsafe_b64encode() mã hóa đầu vào này và thay thế – bằng + và _ bằng /.

 def Encode(key, message):
    enc = []

    for i in range(len(message)):
        key_c = key[i % len(key)]
        enc.append(chr((ord(message[i]) + ord(key_c)) % 256))

    return base64.urlsafe_b64encode("".join(enc).encode()).decode()

Xác định một chức năng giải mã() chấp nhận một khóa để mã hóa và giải mã cùng với tin nhắn. Xác định một danh sách trống và giải mã tin nhắn. Lặp lại đến hết độ dài của thông báo và đặt mô-đun của thao tác làm chỉ mục và lưu trữ giá trị của nó trong key_c. Nối thêm ký tự giải mã thông báo chuỗi Unicode như hình bên dưới. Trả lại chuỗi đã giải mã.

 def Decode(key, message):
    dec = []
    message = base64.urlsafe_b64decode(message).decode()

    for i in range(len(message)):
        key_c = key[i % len(key)]
        dec.append(chr((256 + ord(message[i]) - ord(key_c)) % 256))

    return "".join(dec)

Xác định một chức năng Cách thức() lấy chế độ do người dùng nhập trong tiện ích Mục nhập và gọi hàm thích hợp theo lựa chọn. Trong trường hợp người dùng không nhập phản hồi hợp lệ, hiển thị thông báo lỗi.

 def Mode():
    if (mode.get() == 'E'):
        Result.set(Encode(key.get(), Text.get()))
    elif (mode.get() == 'D'):
        Result.set(Decode(key.get(), Text.get()))
    else:
        Result.set('Invalid Mode')

Xác định một chức năng Lối ra() để tắt và chấm dứt trình thông dịch đang chạy ở chế độ nền. Xác định hàm Reset() để xóa nội dung của trường Mục nhập.

 def Exit():
    root.destroy()

def Reset():
    Text.set("")
    key.set("")
    mode.set("")
    Result.set("")

Xác định các tiện ích Nhãn và Mục nhập cho Tin nhắn, Khóa, Chế độ và Văn bản. Chỉ định cửa sổ mẹ mà bạn muốn đặt chúng vào, kiểu phông chữ, văn bản và màu nền. Cũng đặt tọa độ để sắp xếp chúng.

 Label(root, font='arial 17 bold', text='Message', fg='black', bg="aqua").place(x=60, y=100)
Entry(root, font='arial 15', textvariable=Text, bg='white').place(x=450, y=100)

Label(root, font='arial 17 bold', text='Key', fg='black', bg="aqua").place(x=60, y=130)
Entry(root, font='arial 15', textvariable=key, bg='white').place(x=450, y=130)

Label(root, font='arial 17 bold', text='Mode(E-Encode, D-Decode)', fg='black', bg="aqua").place(x=60, y=160)
Entry(root, font='arial 15', textvariable=mode, bg='white').place(x=450, y=160)

Label(root, font='arial 17 bold', text='Text', fg='black', bg="aqua").place(x=60, y=190)
Entry(root, font='arial 15 bold', textvariable=Result, bg='white').place(x=450, y=190)

Tương tự, xác định ba nút để xem kết quả, đặt lại các trường và tạm dừng chương trình. Các nút có một tham số đặc biệt được gọi là lệnh nhận một chức năng và thực hiện nó khi nhấp chuột.

 Button(root, font='arial 15 bold', text='Result', padx=2, bg='Light Gray', command=Mode).place(x=100, y=240)
Button(root, font='arial 15 bold', text='Reset', width=6, command=Reset, bg='Green', padx=2).place(x=300, y=240)
Button(root, font='arial 15 bold', text='Stop', width=6, command=Exit, bg='Red', padx=2, pady=2).place(x=500, y=240)

Các vòng lặp chính() chức năng yêu cầu Python chạy vòng lặp sự kiện Tkinter và lắng nghe các sự kiện (chẳng hạn như nhấn nút) cho đến khi bạn đóng cửa sổ.

 root.mainloop() 

Bộ mã hóa/giải mã tin nhắn đang hoạt động

Khi chạy chương trình, chương trình sẽ hiển thị một cửa sổ nơi bạn phải nhập thông báo, phím và chế độ. Khi chọn Chế độ mã hóa bằng khóa 2009, thông báo Tận dụng trở thành f8KRwpvCnlLChcKjwp5Sf8KW.

Đầu ra của thông báo mã hóa Python

Tương tự, khi sao chép tin nhắn được mã hóa và dán lại vào đầu vào để giải mã, bạn sẽ nhận lại được tin nhắn gốc.

Đầu ra của thông báo giải mã Python

An ninh mạng bằng Python

Bạn có thể sử dụng Python để viết các tập lệnh tự động kiểm tra bảo mật, giám sát mạng và quét các lỗ hổng. Bạn có thể sử dụng nó để tạo các ứng dụng mạnh mẽ sử dụng xác thực để giảm khả năng kẻ tấn công xâm phạm dữ liệu của bạn.

Các chuyên gia an ninh mạng thường sử dụng Python để xây dựng tường lửa ứng dụng web nhằm giám sát một ứng dụng. Họ có thể thực hiện phân tích phát hiện mối đe dọa bằng Machine Learning. Với kiến ​​trúc này, việc tạo các thử nghiệm thâm nhập tùy chỉnh và xác thực các giao thức bảo mật sẽ dễ dàng hơn nhiều.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *