Mã hóa bằng mã dòng Rabbit
Mã hóa văn bản bằng mã dòng Rabbit (RFC 4503, eSTREAM) với mật khẩu theo định dạng CryptoJS hoặc khóa hex 128 bit và IV 64 bit. Chạy cục bộ.
Kết quả ở định dạng OpenSSL "Salted__" mã hóa Base64, khóa và IV dẫn xuất từ mật khẩu – cùng định dạng với CryptoJS.Rabbit.encrypt(text, passphrase). Bản thân OpenSSL không hỗ trợ Rabbit.
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 Rabbit là gì?
Mã hóa dữ liệu bằng Rabbit, một mã dòng 128 bit nhanh thuộc danh mục eSTREAM (RFC 4503). Nó chủ yếu xuất hiện trong các dự án JavaScript dùng CryptoJS.Rabbit, và công cụ này tạo kết quả tương thích với nó.
Cách sử dụng Mã hóa Rabbit
- 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ới khóa 16 byte và IV 8 byte tùy chọn.
- Gõ hoặc dán Bản rõ.
- Bấm Mã hóa, chọn kết quả Base64 hoặc Hex rồi sao chép.
Ví dụ
Raw key 000102030405060708090a0b0c0d0e0f, IV 0001020304050607, plaintext "Rabbit stream", Hex output
a0e87bbfc85cd88a7e42510ffa
Cùng kết quả với CryptoJS.Rabbit khi dùng cùng khóa và IV.
Khi nào nên dùng Mã hóa Rabbit
Dùng để tương tác với ứng dụng dùng CryptoJS Rabbit hoặc để kiểm thử mã như vậy. Với thiết kế mới, hãy chọn AES-GCM hoặc ChaCha20-Poly1305, vốn đã được chuẩn hóa và có xác thực.
Mã hóa Rabbit hoạt động như thế nào
Rabbit giữ 513 bit trạng thái nội bộ (tám từ trạng thái 32 bit, tám bộ đếm và một bit nhớ) và xuất 128 bit dòng khóa mỗi vòng lặp, đem XOR với dữ liệu. Khóa dài 128 bit; IV 64 bit tùy chọn giúp dòng khóa của mỗi thông điệp là duy nhất. Chế độ mật khẩu dẫn xuất khóa và IV từ mật khẩu và salt ngẫu nhiên bằng EVP_BytesToKey (MD5) hoặc PBKDF2-SHA256 và xuất dữ liệu Base64 Salted__ – giống hệt CryptoJS.Rabbit.encrypt(text, passphrase) với tùy chọn MD5. Khóa hex thô được đọc theo thứ tự dòng byte như CryptoJS; RFC 4503 in vector kiểm thử dưới dạng số big-endian, tức mỗi khối 16 byte bị đảo ngược.
Các Trường Hợp Sử Dụng Phổ Biến
- Tái tạo kết quả
CryptoJS.Rabbit.encryptđể gỡ lỗi - Tạo dữ liệu kiểm thử cho ứng dụng JavaScript dùng Rabbit
- So sánh hành vi mã dòng với RC4
- Kiểm tra vector dòng khóa của RFC 4503
Lưu Ý Bảo Mật
Rabbit chưa có cách phá thực tế nào được biết, nhưng hiếm được dùng, không có cơ chế bảo vệ toàn vẹn tích hợp và ít thư viện hỗ trợ. Hãy dùng AES-GCM cho hệ thống mới.
Câu Hỏi Thường Gặp
Có tương thích với CryptoJS không?
Có. Chế độ mật khẩu với EVP_BytesToKey (MD5) khớp với CryptoJS.Rabbit.encrypt(text, "passphrase"), và chế độ thô khớp với CryptoJS khi truyền khóa và IV dạng WordArray tường minh.
OpenSSL có giải mã được Rabbit không?
Không, OpenSSL không cài đặt Rabbit. Chỉ định dạng container (Salted__ + salt) là giống nhau.
Tôi có cần IV không?
Với Rabbit nó là tùy chọn, nhưng không có IV thì cùng một khóa luôn cho cùng dòng khóa. Chế độ mật khẩu luôn dẫn xuất IV mới từ salt ngẫu nhiên.