วิธีใช้ Base64 ใน Python: เข้ารหัส/ถอดรหัสสตริงและรูปภาพ

1. Base64 คืออะไร? วิธีใช้งานพื้นฐานใน Python

Base64 คืออะไร? Base64 เป็นวิธีการเข้ารหัสข้อมูลไบนารีให้เป็นรูปแบบข้อความ โดยเฉพาะใช้ในอีเมล, URL และการสื่อสารบนเว็บ เพื่อส่งข้อมูลไบนารีอย่างปลอดภัย เทคโนโลยีนี้ทำให้สามารถเข้ารหัสรูปภาพหรือไฟล์ และแลกเปลี่ยนกันได้อย่างปลอดภัยในรูปแบบที่เป็นข้อความ ข้อดีของการใช้ Base64 ใน Python ใน Python สามารถใช้ไลบรารีมาตรฐานชื่อ base64 เพื่อเข้ารหัสและถอดรหัส Base64 ได้อย่างง่ายดายโดยไม่ต้องติดตั้งเพิ่มเติม โค้ดด้านล่างแสดงวิธีเข้ารหัสสตริงเป็นรูปแบบ Base64 แล้วถอดรหัสให้กลับเป็นค่าเดิม
import base64

# ข้อมูลที่จะเข้ารหัส
data = "สวัสดี"
encoded_data = base64.b64encode(data.encode('utf-8'))
print(encoded_data)  # b'44GT44KT44Gr44Gh44Gv'

# ถอดรหัสและแปลงกลับเป็นข้อมูลเดิม
decoded_data = base64.b64decode(encoded_data).decode('utf-8')
print(decoded_data)  # สวัสดี
  • ฟังก์ชัน b64encode() จะเข้ารหัสข้อมูลแบบไบต์ให้อยู่ในรูปแบบ Base64 ส่วน encode('utf-8') ใช้สำหรับแปลงสตริงให้เป็นข้อมูลแบบไบต์
  • ฟังก์ชัน b64decode() จะถอดรหัสข้อมูลที่ถูกเข้ารหัสและแปลงกลับเป็นสตริงเดิม

2. ขั้นตอนการเข้ารหัส Base64 ด้วย Python

การเข้ารหัสสตริง การเข้ารหัส Base64 จะทำหลังจากแปลงข้อความหรือข้อมูลให้เป็นลำดับไบต์ก่อน โค้ดต่อไปนี้จะแสดงขั้นตอนการเข้ารหัสสตริงด้วย Python
import base64

# เข้ารหัสสตริง
text = "Python Base64"
encoded_text = base64.b64encode(text.encode('utf-8'))
print(encoded_text)  # b'UHl0aG9uIEJhc2U2NA=='
คำอธิบาย: encode('utf-8') ใช้เพื่อแปลงสตริงให้เป็นลำดับไบต์ และ b64encode() ใช้สำหรับเข้ารหัสแบบ Base64 ข้อมูลที่เข้ารหัสแล้วจะแสดงเป็นลำดับไบต์

3. กลไกการถอดรหัส Base64 และตัวอย่างจริง

วิธีแปลงข้อมูลที่เข้ารหัสกลับเป็นต้นฉบับ ต่อไปนี้เป็นตัวอย่างการถอดรหัสข้อมูลที่เข้ารหัสแบบ Base64 ให้กลับเป็นสตริงเดิม
import base64

# ข้อมูลที่ถูกเข้ารหัสแบบ Base64
encoded_data = b'UHl0aG9uIGlzIGdyZWF0'
# ถอดรหัสและแปลงกลับเป็นสตริงเดิม
decoded_data = base64.b64decode(encoded_data).decode('utf-8')
print(decoded_data)  # Python is great
จุดสำคัญ: ข้อมูลที่ถอดรหัสจะถูกส่งคืนเป็นไบต์ จึงใช้ decode('utf-8') เพื่อแปลงกลับเป็นสตริง ซึ่งช่วยให้สามารถกู้คืนข้อความที่เข้ารหัสให้กลับสู่รูปแบบเดิมได้。

4. วิธีเข้ารหัสและถอดรหัสไฟล์รูปภาพเป็น Base64 ด้วย Python

แปลงไฟล์รูปภาพเป็นรูปแบบ Base64 Base64 สามารถเข้ารหัสข้อมูลไบนารี เช่น ไฟล์รูปภาพ ได้เช่นกัน ตัวอย่างต่อไปนี้จะแสดงวิธีเข้ารหัสไฟล์รูปภาพเป็น Base64 และบันทึกในรูปแบบข้อความ
import base64

# อ่านไฟล์รูปภาพและเข้ารหัสเป็นรูปแบบ Base64
with open('image.png', 'rb') as img_file:
    encoded_image = base64.b64encode(img_file.read())
    print(encoded_image)
วิธีแปลงไฟล์รูปภาพกลับสู่รูปแบบเดิม ด้านล่างนี้เป็นโค้ดสำหรับถอดรหัสไฟล์รูปภาพที่ถูกเข้ารหัส แล้วแปลงกลับเป็นไฟล์รูปภาพอีกครั้ง
import base64

# ข้อมูลรูปภาพที่ถูกเข้ารหัส
encoded_image = b'...'  # ข้อมูลที่ถูกเข้ารหัส

# ถอดรหัสและบันทึกเป็นไฟล์รูปภาพ
with open('decoded_image.png', 'wb') as img_file:
    img_file.write(base64.b64decode(encoded_image))
คำอธิบาย: b64encode() เพื่อเข้ารหัสรูปภาพ และ b64decode() เพื่อถอดรหัส ก็สามารถแปลงกลับเป็นข้อมูลแบบไบนารีได้。
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

5. ตัวอย่างการประยุกต์ใช้ Base64 ในทางปฏิบัติ

ตัวอย่างการใช้งานในเว็บแอปพลิเคชัน Base64 มีประโยชน์อย่างมากเมื่อมีการแลกเปลี่ยนข้อมูลในเว็บแอปพลิเคชันและ API ตัวอย่างเช่น นี่คือ API ที่แปลงรูปภาพเป็นรูปแบบ Base64 แล้วส่งคืนเป็นการตอบกลับแบบ JSON。
from flask import Flask, jsonify
import base64

app = Flask(__name__)

@app.route('/image')
def get_image():
    with open('image.png', 'rb') as image_file:
        encoded_image = base64.b64encode(image_file.read()).decode('utf-8')
    return jsonify({'image': encoded_image})

if __name__ == '__main__':
    app.run(debug=True)
API นี้เป็นตัวอย่างง่ายๆ ที่เข้ารหัสรูปภาพด้วย Base64 และส่งคืนเป็น JSON ในเว็บแอปพลิเคชัน สิ่งนี้มีประโยชน์เมื่อบันทึกรูปภาพลงในฐานข้อมูล หรือแลกเปลี่ยนข้อมูลรูปภาพผ่านการสื่อสารของ API.

6. ข้อควรระวังและข้อจำกัดของการเข้ารหัส Base64

การเพิ่มขึ้นของขนาดข้อมูล การเข้ารหัส Base64 มีข้อเสียคือขนาดข้อมูลจะเพิ่มขึ้นประมาณ 33% นี่เป็นเพราะ Base64 แปลงข้อมูล 3 ไบต์ให้เป็นข้อความ 4 ไบต์ ตัวอย่างเช่น รูปภาพขนาด 1MB เมื่อถูกเข้ารหัสแบบ Base64 จะกลายเป็น 1.33MB ตัวอย่างการเพิ่มขนาดข้อมูล เมื่อเข้ารหัสไฟล์ขนาด 100KB จะกลายเป็นประมาณ 133KB หากต้องรับส่งไฟล์ขนาดใหญ่บ่อย ๆ เนื่องจากส่งผลกระทบต่อความเร็วในการรับส่งข้อมูลและพื้นที่จัดเก็บ การผสานเทคนิคการปรับให้เหมาะสมและการบีบอัดเข้าด้วยกันจึงเป็นสิ่งสำคัญ

สรุป

ในบทความนี้ เราได้อธิบายวิธีการเข้ารหัสและถอดรหัส Base64 ใน Python ตัวอย่างการประยุกต์ใช้จริง ตลอดจนข้อดีและข้อเสียของการเข้ารหัสแบบ Base64 ไว้แล้ว Base64 เป็นเทคโนโลยีที่สะดวกมากสำหรับการรับส่งและการจัดเก็บข้อมูล และถูกใช้อย่างแพร่หลายโดยเฉพาะในเว็บแอปพลิเคชันและ API อย่างไรก็ตาม ควรคำนึงถึงข้อจำกัดเรื่องขนาดข้อมูลที่เพิ่มขึ้น และใช้ให้เหมาะสมกับสถานการณ์ ในโครงการต่อไปของคุณ ลองนำเทคโนโลยีนี้ไปประยุกต์ใช้ดู