ฟังก์ชันในโมดูล base64 จะแปลข้อมูลไบนารีเป็นชุดย่อยของ ASCII ที่เหมาะสำหรับการส่งโดยใช้โปรโตคอลข้อความธรรมดา
ฟังก์ชันการเข้ารหัสและถอดรหัสใช้ข้อกำหนดใน RFC 3548 ซึ่งกำหนดอัลกอริธึม Base16, Base32 และ Base64 และสำหรับการเข้ารหัส Ascii85 และ Base85 มาตรฐานตามความเป็นจริง การเข้ารหัส RFC 3548 เหมาะสำหรับการเข้ารหัสข้อมูลไบนารีเพื่อให้สามารถส่งได้อย่างปลอดภัยทางอีเมล ใช้เป็นส่วนหนึ่งของ URL หรือรวมเป็นส่วนหนึ่งของคำขอ HTTP POST
อินเทอร์เฟซที่ทันสมัยโดยโมดูลนี้เข้ารหัสอ็อบเจ็กต์ที่เหมือนไบต์เป็นไบต์ ASCII และถอดรหัสอ็อบเจ็กต์หรือสตริงที่เหมือนไบต์ที่มี ASCII เป็นไบต์ รองรับตัวอักษรฐาน-64 ที่กำหนดไว้ใน RFC 3548 (ปกติ และ URL และระบบไฟล์ปลอดภัย)
อินเทอร์เฟซที่ทันสมัยให้ −
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