Computer >> Máy Tính >  >> Lập trình >> Python

Mã hóa dữ liệu Base64 bằng Python

Các hàm trong mô-đun base64 dịch dữ liệu nhị phân thành một tập con ASCII phù hợp để truyền bằng giao thức văn bản rõ.

Các chức năng mã hóa và giải mã triển khai các thông số kỹ thuật trong RFC 3548, xác định các thuật toán Base16, Base32 và Base64 và cho các mã hóa Ascii85 và Base85 tiêu chuẩn de-facto. Các mã hóa RFC 3548 phù hợp để mã hóa dữ liệu nhị phân để nó có thể được gửi qua email một cách an toàn, được sử dụng như một phần của URL hoặc được bao gồm như một phần của yêu cầu HTTP POST.

Giao diện hiện đại được cung cấp bởi mô-đun này mã hóa các đối tượng giống byte thành ASCII byte và giải mã các đối tượng hoặc chuỗi giống byte chứa ASCII thành byte. Các bảng chữ cái cơ sở 64 sau được xác định trong RFC 3548 (bình thường, và URL- và hệ thống tệp an toàn) được hỗ trợ.

Mã hóa dữ liệu Base64 bằng Python

Giao diện hiện đại cung cấp -

base64.b64encode (): Mã hóa đối tượng giống byte bằng cách sử dụng Base64 và trả về các byte đã mã hóa.

base64.b64decode (): Giải mã đối tượng giống byte được mã hóa Base64 hoặc chuỗi ASCII và trả về các byte đã giải mã.

Để chứng minh các hàm b64encode () và base64desode () của mô-đun bse64, trước tiên chúng ta hãy mã hóa một chuỗi Python.

>>> import base64
>>> string = 'Python programming'
>>> enc_string = string.encode()
>>> enc_string
b'Python programming'

Đối tượng byte này được mã hóa bằng hàm b64encode ()

>>> b64_estring = base64.b64encode(enc_string)
>>> b64_estring
b'UHl0aG9uIHByb2dyYW1taW5n'

Chúng ta có thể sử dụng hàm decode () để lấy chuỗi ra khỏi đối tượng byte này.

>>> dec_string = b64_estring.decode()
>>> dec_string
'UHl0aG9uIHByb2dyYW1taW5n'

Hàm encode () trả về đối tượng byte

>>> b1 = dec_string.encode()
>>> b1
b'UHl0aG9uIHByb2dyYW1taW5n'

Để giải mã bằng hàm b64decode () -

>>> d = base64.b64decode(b1)
>>> d
b'Python programming'

cuối cùng có được chuỗi gốc bằng cách giải mã đối tượng byte phía trên

>>> originalstring = d.decode()
>>> originalstring
'Python programming'

Bảng chữ cái base64 có thể sử dụng + và /, nếu được sử dụng trong URL, cần phải sử dụng mã hóa thay thế để thay thế các ký tự đó.

urlsafe_b64encode (): Mã hóa đối tượng giống byte bằng cách sử dụng bảng chữ cái URL và hệ thống tệp thay thế - thay vì + và _ thay vì / trong bảng chữ cái Base64 tiêu chuẩn và trả về các byte được mã hóa.

urlsafe_b64decode (): Giải mã đối tượng giống byte hoặc chuỗi ASCII bằng URL và bảng chữ cái an toàn cho hệ thống tệp, thay thế - thay vì + và _ thay vì / trong bảng chữ cái Base64 tiêu chuẩn và trả về các byte đã giải mã.

Giao diện kế thừa cung cấp các chức năng để mã hóa và giải mã các đối tượng tệp -

base64.encode (đầu vào, đầu ra): Mã hóa nội dung của tệp đầu vào nhị phân và ghi dữ liệu được mã hóa base64 kết quả vào tệp đầu ra. đầu vào và đầu ra phải là các đối tượng tệp. đầu vào sẽ được đọc cho đến khi input.read () trả về một đối tượng byte trống.

base64.decode (đầu vào, đầu ra): Giải mã nội dung của tệp đầu vào nhị phân và ghi dữ liệu nhị phân kết quả vào tệp đầu ra. đầu vào và đầu ra phải là các đối tượng tệp. đầu vào sẽ được đọc cho đến khi input.readline () trả về một đối tượng byte trống.

Đầu tiên, tạo một tệp bằng chế độ 'wb'

>>> f1 = open('file.txt','wb')
>>> f1.write('Simple is better than complex'.encode())
>>> f1.close()

Bây giờ hãy mã hóa tệp bằng phương pháp base64.encode.

>>> f1 = open('file.txt','rb')
>>> f2 = open('file.dat','wb')
>>> base64.encode(f1,f2)
>>> f1.close()
>>> f2.close()

Fil.dat hiển thị nội dung sau nếu được mở trong notepad

U2ltcGxlIGlzIGJldHRlciB0aGFuIGNvbXBsZXg=

Để giải mã file.dat trong filenew.txt, hãy sử dụng hàm decode ()

>>> f1 = open('file.dat','rb')
>>> f2 = open('filenew.txt','wb')
>>> base64.decode(f1,f2)
>>> f1.close()
>>> f2.close()

Văn bản gốc phải hiển thị trong filenew.txt