Mã hóa Triple DES (3DES)
Mã hóa văn bản bằng Triple DES (DES-EDE3) với mật khẩu theo định dạng OpenSSL des-ede3-cbc hoặc khóa hex 16/24 byte và IV. Chế độ CBC, CFB, OFB và ECB.
Kết quả ở định dạng OpenSSL "Salted__" mã hóa Base64: 8 byte salt ngẫu nhiên rồi đến bản mã. Khóa và IV được dẫn xuất từ mật khẩu và salt, nên cùng một văn bản sẽ cho kết quả khác nhau mỗi lần. Lệnh tương đương:
openssl enc -des-ede3-cbc -md md5 -a -A -k '…'Chạy hoàn toàn trong trình duyệt. Dữ liệu của bạn không bao giờ bị tải lên.
Mã hóa Triple DES là gì?
Mã hóa dữ liệu bằng Triple DES, thuật toán áp dụng DES ba lần (mã hóa–giải mã–mã hóa) với hai hoặc ba khóa độc lập. Nó vẫn còn trong hệ thống thanh toán, VPN đời cũ và phần mềm doanh nghiệp, nên công cụ này giúp bạn tạo dữ liệu tương thích.
Cách sử dụng Mã hóa Triple DES
- Giữ Nguồn khóa ở Mật khẩu (tương thích OpenSSL) và gõ Mật khẩu, hoặc chuyển sang Khóa thô + IV (hex) và nhập chính xác khóa và IV dạng hex.
- Chọn Chế độ và Đệm (padding) (CBC với PKCS#7 là mặc định của OpenSSL).
- Gõ hoặc dán Bản rõ (hoặc đổi mã hóa đầu vào sang Hex cho dữ liệu nhị phân).
- Bấm Mã hóa, chọn Base64 hoặc Hex ở Định dạng kết quả rồi sao chép bản mã.
Ví dụ
Raw key 0123456789abcdeffedcba987654321089abcdef01234567, IV 1234567890abcdef, CBC, PKCS#7, plaintext "Triple DES test message"
w46mmLXKZ7SF3YdvRaW9PUPLk/6OeJll
Kết quả Base64; giống hệt des-ede3-cbc của OpenSSL/Node.
Khi nào nên dùng Mã hóa Triple DES
Dùng khi hệ thống đối tác hoặc một tiêu chuẩn vẫn bắt buộc 3DES (một số quy trình HSM EMV/thanh toán, dịch vụ SOAP cũ) hoặc để tạo vector kiểm thử. Với thiết kế mới, hãy dùng AES-GCM.
Mã hóa Triple DES hoạt động như thế nào
3DES mã hóa mỗi khối 8 byte theo E(K3, D(K2, E(K1, block))). Khóa 24 byte cho ba khóa độc lập (keying option 1); khóa 16 byte dùng K3 = K1 (3DES hai khóa). Chế độ mật khẩu dẫn xuất khóa 24 byte và IV 8 byte rồi ghi theo định dạng Salted__ của OpenSSL, tương thích với openssl enc -des-ede3-cbc và CryptoJS.TripleDES.encrypt. Chế độ thô dùng khóa và IV hex của bạn; CBC/ECB được đệm bằng PKCS#7.
Các Trường Hợp Sử Dụng Phổ Biến
- Tạo dữ liệu cho hệ thống cũ chỉ chấp nhận 3DES-CBC
- Tái tạo kết quả
CryptoJS.TripleDES.encrypt(text, passphrase) - Tạo vector kiểm thử 3DES hai khóa hoặc ba khóa
- So sánh bản cài đặt của bạn với des-ede3-cbc của OpenSSL
Lưu Ý Bảo Mật
Triple DES đã bị loại bỏ dần: NIST không cho phép dùng nó để mã hóa sau năm 2023 và khối 64 bit khiến các phiên dài dễ bị tấn công sinh nhật Sweet32. Chỉ dùng để tương thích.
Câu Hỏi Thường Gặp
Khóa 16 byte hay 24 byte?
24 byte cho ba khóa DES độc lập (độ an toàn hiệu dụng khoảng 112 bit). Khóa 16 byte là 3DES hai khóa, trong đó khóa thứ ba bằng khóa thứ nhất (khoảng 80 bit).
Kết quả có tương thích với OpenSSL không?
Có. Ở chế độ mật khẩu, kết quả giống hệt những gì openssl enc -des-ede3-cbc -md md5 -a -A -k <passphrase> tạo ra (EVP_BytesToKey với MD5), hoặc -pbkdf2 -iter N khi bạn chọn PBKDF2-HMAC-SHA256. Thêm -d để giải mã. Trang hiển thị lệnh tương ứng bên dưới ô mật khẩu.
Triple DES còn an toàn không?
Nó chưa bị phá hoàn toàn, nhưng chậm, có khối 64 bit (Sweet32) và đã bị NIST rút lại. Hãy coi nó chỉ là thuật toán cũ.