Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การเข้ารหัสข้อมูล Base64 โดยใช้ Python


ฟังก์ชันในโมดูล base64 จะแปลข้อมูลไบนารีเป็นชุดย่อยของ ASCII ที่เหมาะสำหรับการส่งโดยใช้โปรโตคอลข้อความธรรมดา

ฟังก์ชันการเข้ารหัสและถอดรหัสใช้ข้อกำหนดใน RFC 3548 ซึ่งกำหนดอัลกอริธึม Base16, Base32 และ Base64 และสำหรับการเข้ารหัส Ascii85 และ Base85 มาตรฐานตามความเป็นจริง การเข้ารหัส RFC 3548 เหมาะสำหรับการเข้ารหัสข้อมูลไบนารีเพื่อให้สามารถส่งได้อย่างปลอดภัยทางอีเมล ใช้เป็นส่วนหนึ่งของ URL หรือรวมเป็นส่วนหนึ่งของคำขอ HTTP POST

อินเทอร์เฟซที่ทันสมัยโดยโมดูลนี้เข้ารหัสอ็อบเจ็กต์ที่เหมือนไบต์เป็นไบต์ ASCII และถอดรหัสอ็อบเจ็กต์หรือสตริงที่เหมือนไบต์ที่มี ASCII เป็นไบต์ รองรับตัวอักษรฐาน-64 ที่กำหนดไว้ใน RFC 3548 (ปกติ และ URL และระบบไฟล์ปลอดภัย)

การเข้ารหัสข้อมูล Base64 โดยใช้ Python

อินเทอร์เฟซที่ทันสมัยให้ −

base64.b64encode(): เข้ารหัสวัตถุคล้ายไบต์โดยใช้ Base64 และส่งคืนไบต์ที่เข้ารหัส

base64.b64decode(): ถอดรหัสวัตถุคล้ายไบต์ที่เข้ารหัส Base64 หรือสตริง ASCII และส่งคืนไบต์ที่ถอดรหัส

ในการสาธิตฟังก์ชัน b64encode() และ base64desode() ของโมดูล bse64 ให้เราเข้ารหัสสตริง Python ก่อน

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

ออบเจ็กต์ไบต์นี้ถูกเข้ารหัสโดยใช้ฟังก์ชัน b64encode()

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

เราสามารถใช้ฟังก์ชัน decode() เพื่อดึงสตริงออกจากวัตถุไบต์นี้

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

ฟังก์ชัน encode() ส่งกลับวัตถุไบต์

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

การถอดรหัสโดยใช้ฟังก์ชัน b64decode() -

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

ในที่สุดก็ได้สตริงดั้งเดิมโดยถอดรหัสเหนือวัตถุไบต์

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

ตัวอักษรฐาน 64 อาจใช้ + และ / หากใช้ใน URL จำเป็นต้องใช้การเข้ารหัสสำรองเพื่อแทนที่อักขระเหล่านั้น

urlsafe_b64encode(): เข้ารหัสวัตถุคล้ายไบต์โดยใช้อักษร URL และ filesystemsafe ซึ่งแทนที่ - แทน + และ _ แทน/ในตัวอักษร Base64 มาตรฐาน และส่งคืนไบต์ที่เข้ารหัส

urlsafe_b64decode(): ถอดรหัสวัตถุคล้ายไบต์หรือสตริง ASCII โดยใช้ URL และตัวอักษรที่ปลอดภัยต่อระบบไฟล์ ซึ่งแทนที่ - แทน + และ _ แทนที่จะเป็น/ในตัวอักษร Base64 มาตรฐาน และส่งคืนไบต์ที่ถอดรหัสแล้ว

อินเทอร์เฟซดั้งเดิมให้ฟังก์ชันสำหรับการเข้ารหัสและถอดรหัสอ็อบเจ็กต์ไฟล์ -

base64.encode(อินพุต,เอาต์พุต): เข้ารหัสเนื้อหาของไฟล์อินพุตไบนารีและเขียนข้อมูลที่เข้ารหัส base64 ที่เป็นผลลัพธ์ไปยังไฟล์เอาต์พุต อินพุตและเอาต์พุตต้องเป็นวัตถุไฟล์ อินพุตจะถูกอ่านจนกว่า input.read() จะส่งคืนวัตถุไบต์ว่าง

base64.decode(อินพุต,เอาต์พุต): ถอดรหัสเนื้อหาของไฟล์อินพุตไบนารีและเขียนข้อมูลไบนารีที่เป็นผลลัพธ์ไปยังไฟล์เอาต์พุต อินพุตและเอาต์พุตต้องเป็นวัตถุไฟล์ อินพุตจะถูกอ่านจนกว่า input.readline() จะส่งคืนวัตถุไบต์ว่าง

ขั้นแรก สร้างไฟล์โดยใช้โหมด 'wb'

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

ตอนนี้เข้ารหัสไฟล์โดยใช้วิธี base64.encode

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

fil.dat จะแสดงเนื้อหาต่อไปนี้หากเปิดในแผ่นจดบันทึก

U2ltcGxlIGlzIGJldHRlciB0aGFuIGNvbXBsZXg=

ในการถอดรหัส file.dat ใน filenew.txt ให้ใช้ฟังก์ชัน decode()

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

ข้อความต้นฉบับควรมองเห็นได้ใน filenew.txt