Cryptology Academy · บทเรียน

การเข้ารหัสไฟล์ด้วย AES ในทางปฏิบัติ

ใช้ OpenSSL และ Python เพื่อเข้ารหัสและถอดรหัสไฟล์จริงด้วย AES

บทเรียน 4 จาก 413 ขั้นตอน

การเข้ารหัสไฟล์ด้วย AES ในทางปฏิบัติ เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

ยินดีต้อนรับ

บทเรียนนี้จะเชื่อมโยงทฤษฎีเข้ากับการปฏิบัติ เราจะเข้ารหัสและถอดรหัสไฟล์จริงโดยใช้ AES-GCM ในภาษาไพธอน ซึ่งเป็นโหมดที่แนะนำสำหรับการเข้ารหัสพร้อมยืนยันความถูกต้อง

เหตุใดจึงใช้ AES-GCM

AES-GCM ให้การเข้ารหัสพร้อมยืนยันความถูกต้องและข้อมูลประกอบ (AEAD) โดยจะเข้ารหัสและสร้างแท็กยืนยันความถูกต้องขนาด 16 ไบต์ด้วย การแก้ไขข้อมูลใด ๆ จะถูกตรวจพบก่อนการถอดรหัส

องค์ประกอบของ AES-GCM

ข้อมูลนำเข้า: กุญแจขนาด 32 ไบต์ ค่าที่ใช้ครั้งเดียวแบบสุ่มขนาด 12 ไบต์ ข้อความต้นฉบับ และข้อมูลประกอบ (AAD) ที่อาจมีหรือไม่มีก็ได้ ข้อมูลส่งออก: ข้อความเข้ารหัสและแท็กยืนยันความถูกต้องขนาด 16 ไบต์ ค่าที่ใช้ครั้งเดียวต้องไม่ซ้ำกันในการเข้ารหัสแต่ละครั้ง

ติดตั้งไลบรารีการเข้ารหัส

pip install cryptography ไลบรารีการเข้ารหัสสำหรับภาษาไพธอนของ PyCA เป็นไลบรารีการเข้ารหัสที่แนะนำ ไลบรารีนี้ห่อหุ้ม OpenSSL และมีทั้งสูตรการใช้งานระดับสูงกับส่วนประกอบระดับต่ำของ hazmat

เข้ารหัสด้วย AES-GCM ในภาษาไพธอน

from cryptography.hazmat.primitives.ciphers.aead import AESGCM import os key = AESGCM.generate_key(bit_length=256) nonce = os.urandom(12) aad = b'file_version_1' aesgcm = AESGCM(key) ciphertext = aesgcm.encrypt(nonce, plaintext, aad)

ถอดรหัสด้วย AES-GCM ในภาษาไพธอน

try: plaintext = aesgcm.decrypt(nonce, ciphertext, aad) except Exception: print('Decryption failed — tampered or wrong key') หากการตรวจสอบแท็กล้มเหลว decrypt() จะส่งข้อยกเว้น ห้ามเพิกเฉยต่อข้อยกเว้นนี้โดยเด็ดขาด

ขั้นตอนการเข้ารหัสไฟล์

with open('input.bin', 'rb') as f: plaintext = f.read() ciphertext_with_tag = aesgcm.encrypt(nonce, plaintext, None) # Store: nonce (12 bytes) + ciphertext_with_tag with open('output.enc', 'wb') as f: f.write(nonce + ciphertext_with_tag)

ขั้นตอนการถอดรหัสไฟล์

with open('output.enc', 'rb') as f: data = f.read() nonce = data[:12] ciphertext_with_tag = data[12:] plaintext = aesgcm.decrypt(nonce, ciphertext_with_tag, None)

การจัดการค่าที่ใช้ครั้งเดียว

ค่าที่ใช้ครั้งเดียวแบบสุ่มขนาด 12 ไบต์ร่วมกับ AES-GCM สามารถใช้งานได้อย่างปลอดภัยสำหรับการเข้ารหัสสูงสุด 2^32 ครั้งด้วยกุญแจเดียวกัน ก่อนที่ความน่าจะเป็นของการชนกันจะมีนัยสำคัญ หลังจากนั้นให้เปลี่ยนกุญแจ

การใช้ OpenSSL บนบรรทัดคำสั่ง

# Encrypt: openssl enc -aes-256-cbc -pbkdf2 -in plain.txt -out encrypted.bin # Decrypt: openssl enc -d -aes-256-cbc -pbkdf2 -in encrypted.bin -out plain.txt หมายเหตุ: โหมด CBC — ให้เพิ่มแฟล็ก -GCM เพื่อใช้การเข้ารหัสพร้อมยืนยันความถูกต้องใน OpenSSL รุ่นใหม่กว่า

แนวทางปฏิบัติที่ดีในการจัดเก็บกุญแจ

ห้ามเขียนกุญแจลงในซอร์สโค้ดโดยตรง ให้ใช้ตัวแปรสภาพแวดล้อม, AWS KMS, HashiCorp Vault หรือพวงกุญแจของ OS เปลี่ยนกุญแจเป็นประจำ และเพิกถอนกุญแจเมื่อบุคลากรออกจากงาน

ตรวจสอบความเข้าใจอย่างรวดเร็ว

จะเกิดอะไรขึ้นเมื่อ AES-GCM ตรวจพบว่าข้อความเข้ารหัสถูกแก้ไข

สรุปทบทวน

ตอนนี้คุณสามารถเข้ารหัสไฟล์ด้วย AES-GCM ในภาษาไพธอนได้แล้ว ต่อไปเราจะเข้าสู่การเข้ารหัสแบบอสมมาตรและเรียนรู้ RSA ตั้งแต่พื้นฐาน
เริ่มต้นได้ฟรี

เรียนรู้ Cryptology Academy ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
67
บทเรียน
261

คำถามที่พบบ่อย

บทเรียน “การเข้ารหัสไฟล์ด้วย AES ในทางปฏิบัติ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเข้ารหัสไฟล์ด้วย AES ในทางปฏิบัติ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเข้ารหัสไฟล์ด้วย AES ในทางปฏิบัติ”

ใช้ OpenSSL และ Python เพื่อเข้ารหัสและถอดรหัสไฟล์จริงด้วย AES คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การเข้ารหัสไฟล์ด้วย AES ในทางปฏิบัติ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม

ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. แนวคิดการเข้ารหัสแบบสมมาตร
  2. โครงสร้าง AES: รอบและเมทริกซ์สถานะ
  3. การขยายคีย์ AES และขนาดคีย์
  4. การเข้ารหัสไฟล์ด้วย AES ในทางปฏิบัติ
← กลับไปที่ Cryptology Academy