Mã hóa RC4 (thuật toán cũ)
Mã hóa văn bản bằng mã dòng RC4 (ARC4) với mật khẩu tương thích OpenSSL hoặc khóa hex thô. Chỉ dùng để tương thích với hệ thống cũ và tạo vector kiểm thử.
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:
Giống OpenSSL, mật khẩu được chuyển thành khóa RC4 128 bit. CryptoJS.RC4 dùng mật khẩu sẽ tạo khóa 256 bit, nên không thể giải mã kết quả của nó tại đây.
openssl enc -rc4 -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 RC4 là gì?
Mã hóa dữ liệu bằng RC4 (còn gọi là ARC4 hoặc ARCFOUR), một mã dòng từng được dùng trong WEP, TLS đời đầu và nhiều định dạng file. Kết quả có cùng độ dài với đầu vào vì RC4 XOR dữ liệu với một dòng khóa.
Cách sử dụng Mã hóa RC4
- Chọn Mật khẩu (tương thích OpenSSL) và gõ mật khẩu, hoặc Khóa thô + IV (hex) và nhập khóa 1–256 byte dạng hex (RC4 không dùng IV).
- Gõ hoặc dán Bản rõ.
- Bấm Mã hóa và chọn Base64 hoặc Hex ở Định dạng kết quả.
- Sao chép bản mã.
Ví dụ
Raw key 4b6579 ("Key"), plaintext "Plaintext", Hex output bbf316e8d940af0ad3
Vector kiểm thử RC4 kinh điển.
Khi nào nên dùng Mã hóa RC4
Dùng để tương tác với phần mềm cũ hoặc kiểm tra vector kiểm thử RC4 (RFC 6229). Đừng bao giờ dùng RC4 cho mã hóa mới; những byte dòng khóa đầu tiên làm lộ thông tin về khóa và không có kiểm tra toàn vẹn.
Mã hóa RC4 hoạt động như thế nào
RC4 dựng một hoán vị 256 byte từ khóa (thuật toán lập lịch khóa) rồi tạo một byte dòng khóa cho mỗi byte đầu vào, đem XOR với bản rõ. Chế độ thô dùng trực tiếp byte khóa của bạn (1–256 byte). Chế độ mật khẩu dẫn xuất khóa 16 byte từ mật khẩu và salt ngẫu nhiên giống openssl enc -rc4 (EVP_BytesToKey MD5 hoặc PBKDF2-SHA256) và xuất định dạng Salted__. Mã hóa và giải mã là cùng một phép toán.
Các Trường Hợp Sử Dụng Phổ Biến
- Xác minh vector kiểm thử RC4 như Key/Plaintext → BBF316E8D940AF0AD3
- Tạo dữ liệu cho ứng dụng cũ dùng ARC4
- Tìm hiểu vì sao WEP và RC4 trong TLS bị phá
- Tái tạo kết quả của
openssl enc -rc4
Lưu Ý Bảo Mật
RC4 đã bị phá: dòng khóa của nó có độ lệch thống kê mạnh và RFC 7465 cấm dùng nó trong TLS. Nó không bảo vệ tính toàn vẹn. Chỉ dùng cho dữ liệu cũ.
Câu Hỏi Thường Gặp
Vì sao tôi không giải mã được kết quả CryptoJS.RC4 tạo bằng mật khẩu?
CryptoJS dẫn xuất khóa RC4 256 bit từ mật khẩu, còn OpenSSL dẫn xuất khóa 128 bit. Công cụ này theo OpenSSL. Với khóa thô, cả hai cho kết quả giống hệt nhau.
RC4 có dùng IV không?
Không. Đó là lý do dùng lại cùng một khóa cho hai thông điệp là thảm họa: XOR hai bản mã sẽ triệt tiêu dòng khóa. Chế độ mật khẩu tránh điều đó bằng cách dùng salt ngẫu nhiên mỗi lần.
Lệnh OpenSSL nào tương ứng?
openssl enc -rc4 -md md5 -a -A -provider legacy -provider default -k <passphrase> (OpenSSL 3 cần legacy provider).