Mã hóa DES (thuật toán cũ)

Mã hóa văn bản bằng DES cũ ở CBC, CFB, OFB hoặc ECB với mật khẩu kiểu OpenSSL des-cbc hoặc khóa hex 8 byte. Chỉ để tương thích – DES không an toàn.

DES không an toàn: khóa 56 bit có thể bị dò vét cạn trong vài giờ. Chỉ dùng để đọc dữ liệu cũ, tuyệt đối không dùng để bảo vệ dữ liệu mới. Hãy dùng AES.

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-cbc -md md5 -a -A -provider legacy -provider default -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 DES là gì?

Mã hóa dữ liệu bằng Data Encryption Standard, thuật toán mã khối năm 1977 với khối 64 bit và khóa hiệu dụng 56 bit. Công cụ có mặt ở đây để tái tạo hoặc tương tác với hệ thống cũ (ngân hàng, thẻ thông minh, file cũ) – không phải để bảo vệ bất cứ thứ gì.

Cách sử dụng Mã hóa DES

  1. 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.
  2. Chọn Chế độ và Đệm (padding) (CBC với PKCS#7 là mặc định của OpenSSL).
  3. 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).
  4. 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ụ

Đầu vào
Raw key 133457799bbcdff1, mode ECB, padding None, hex plaintext 0123456789abcdef
Đầu ra
85e813540f0ab405

Kiểm thử đáp án đã biết kinh điển của DES, định dạng kết quả Hex.

Khi nào nên dùng Mã hóa DES

Chỉ dùng khi một giao thức hoặc định dạng file cũ bắt buộc dùng DES, hoặc để tạo vector kiểm thử đáp án đã biết. Với mọi thứ mới, hãy dùng AES. Triple DES cũng đã bị loại bỏ dần.

Mã hóa DES hoạt động như thế nào

DES chạy 16 vòng Feistel trên các khối 8 byte. Ở chế độ mật khẩu, khóa và IV 8 byte được dẫn xuất từ mật khẩu và salt ngẫu nhiên (EVP_BytesToKey MD5 hoặc PBKDF2-SHA256) và kết quả có định dạng Salted__ của OpenSSL, tương thích với openssl enc -des-cbc -provider legacy. Ở chế độ thô, bạn cung cấp khóa 8 byte (16 ký tự hex; các bit chẵn lẻ bị bỏ qua) và IV 8 byte. CBC/ECB mặc định dùng đệm PKCS#7; CFB và OFB là chế độ dòng 64 bit.

Các Trường Hợp Sử Dụng Phổ Biến

  • Tái tạo vector kiểm thử DES như khóa 133457799BBCDFF1 / bản rõ 0123456789ABCDEF
  • Tạo dữ liệu kiểm thử cho hệ thống thanh toán hoặc thẻ thông minh cũ
  • Dạy cách hoạt động của mã khối và chế độ bằng một ví dụ kinh điển
  • Mã hóa dữ liệu cho ứng dụng cũ chỉ hỗ trợ DES

Lưu Ý Bảo Mật

DES dùng khóa 56 bit có thể bị dò vét cạn trong vài giờ trên phần cứng phổ thông. Chỉ dùng công cụ này để đọc hoặc tái tạo dữ liệu cũ; đừng bao giờ mã hóa dữ liệu mới bằng DES.

Câu Hỏi Thường Gặp

DES có an toàn không?

Không. Khóa 56 bit của nó đã bị dò vét cạn công khai năm 1998 (EFF DES Cracker) và ngày nay chỉ mất vài giờ. Hãy dùng AES cho dữ liệu thật.

Vì sao OpenSSL 3 báo thuật toán không được hỗ trợ?

OpenSSL 3 đã chuyển DES sang legacy provider. Thêm -provider legacy -provider default vào lệnh, ví dụ openssl enc -des-cbc -md md5 -a -A -provider legacy -provider default -k ….

Khóa phải dài bao nhiêu?

Đúng 8 byte (16 ký tự hex). Bit thấp nhất của mỗi byte là bit chẵn lẻ mà DES bỏ qua, nên các khóa chỉ khác nhau ở những bit đó là tương đương.

Khám phá thêm danh mục