Giải mã RSA bằng khóa bí mật
Giải mã bản mã RSA (Base64 hoặc hex) bằng khóa bí mật PEM với RSA-OAEP SHA-256, OAEP SHA-1 hoặc PKCS#1 v1.5. Báo lỗi rõ ràng khi sai khóa hoặc kiểu đệm.
OAEP là kiểu đệm được khuyên dùng. MGF1 dùng cùng hàm băm, giống Web Crypto và openssl pkeyutl -pkeyopt rsa_oaep_md.
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.
Giải mã RSA là gì?
Giải mã bản mã RSA bằng khóa bí mật định dạng PEM của bạn (PKCS#8 BEGIN PRIVATE KEY hoặc PKCS#1 BEGIN RSA PRIVATE KEY). Công cụ hỗ trợ RSA-OAEP với SHA-256 hoặc SHA-1 và kiểu đệm PKCS#1 v1.5 cũ, khớp với kết quả của OpenSSL, Web Crypto, Java và Node.js.
Cách sử dụng Giải mã RSA
- Dán Khóa bí mật (PEM) (không đặt mật khẩu), hoặc bấm Tạo cặp khóa thử nghiệm (2048 bit) để thử nghiệm.
- Chọn Kiểu đệm (padding) đã dùng khi mã hóa.
- Dán Bản mã và chọn Base64 hoặc Hex làm cách mã hóa của nó.
- Bấm Giải mã; chuyển kết quả sang Hex nếu bản rõ là dữ liệu nhị phân (ví dụ khóa AES).
Ví dụ
Bản mã từ `crypto.publicEncrypt` của Node.js (RSA-OAEP, oaepHash sha256) của "Hello RSA", cùng khóa bí mật PKCS#8 2048 bit tương ứng
Hello RSA
Khi nào nên dùng Giải mã RSA
Dùng để kiểm tra bản mã do chính mã của bạn tạo, giải mã dữ liệu kiểm thử hoặc xác minh khả năng tương thích giữa các nền tảng. Tránh dán khóa bí mật production thật vào trình duyệt; hãy dùng khóa thử nghiệm. Khóa bí mật có mật khẩu phải được xuất lại không có mật khẩu trước.
Giải mã RSA hoạt động như thế nào
Số mũ bí mật khôi phục thông điệp đã đệm m = cᵈ mod n (có tối ưu CRT), rồi phần đệm được gỡ bỏ và kiểm tra: OAEP xác minh mặt nạ MGF1 và hash nhãn theo SHA-256 hoặc SHA-1 đã chọn, PKCS#1 v1.5 xác minh header 00 02 và byte phân cách. Bản mã phải dài đúng bằng modulus (256 byte với khóa 2048 bit); bất kỳ sai lệch nào về khóa, kiểu đệm hay hash đều gây lỗi giải mã thay vì cho kết quả sai.
Các Trường Hợp Sử Dụng Phổ Biến
- Xác minh kết quả RSA-OAEP phía trình duyệt giải mã được bằng khóa máy chủ
- Giải mã khóa AES được bọc bằng RSA trong bài kiểm thử mã hóa lai
- Chẩn đoán lệch OAEP SHA-1 và SHA-256 giữa Java và Node.js
- Giải mã dữ liệu PKCS#1 v1.5 từ hệ thống cũ
Lưu Ý Bảo Mật
Khóa và thông điệp chỉ được xử lý trong trình duyệt của bạn. Đừng dán khóa bí mật production vào bất kỳ website nào bạn không kiểm soát – hãy tạo cặp khóa thử nghiệm thay vào đó.
Câu Hỏi Thường Gặp
"Giải mã thất bại" – sai ở đâu?
Thường là kiểu đệm hoặc hash OAEP không khớp (SHA-1 hay SHA-256), bản mã thuộc về cặp khóa khác, hoặc nó bị hỏng khi sao chép. Hãy thử hash OAEP còn lại trước.
Khóa của tôi bắt đầu bằng BEGIN ENCRYPTED PRIVATE KEY.
Khóa có mật khẩu không được hỗ trợ. Hãy chuyển đổi một bản sao thử nghiệm bằng openssl pkey -in key.pem -out plain.pem và xử lý khóa không mật khẩu thật cẩn thận.
Lỗi độ dài bản mã nói rằng nó phải là 256 byte.
Bản mã RSA luôn dài bằng modulus. Hãy kiểm tra bạn đã dán đủ chuỗi Base64 và chọn đúng cách mã hóa đầu vào (Base64 hay Hex).