Công cụ tạo cặp khóa RSA
Tạo cặp khóa RSA (2048, 3072 hoặc 4096 bit) ngay trong trình duyệt bằng Web Crypto. Tải khóa PEM định dạng PKCS#8/SPKI hoặc PKCS#1. Không có gì được tải lên.
Khóa được tạo ngay trong trình duyệt bằng Web Crypto API (crypto.subtle.generateKey). Khóa công khai có thể chia sẻ thoải mái; nó dùng để mã hóa hoặc xác minh.
Công cụ Liên quan
Xem Tất cảTạo khóa RSA là gì?
Tạo cặp khóa công khai/bí mật RSA mới trong trình duyệt bằng Web Crypto API và hiển thị cả hai khóa dưới dạng văn bản PEM để bạn sao chép hoặc tải xuống. Chọn 2048, 3072 hoặc 4096 bit và định dạng hiện đại PKCS#8 + SPKI hoặc định dạng cũ PKCS#1 "RSA PRIVATE KEY".
Cách sử dụng Tạo khóa RSA
- Chọn Độ dài khóa (2048 bit là mức tối thiểu phổ biến, 3072 cho sử dụng lâu dài).
- Chọn Định dạng khóa: PKCS#8 + SPKI (khuyên dùng) hoặc PKCS#1.
- Bấm Tạo cặp khóa và chờ một chút (khóa 4096 bit mất nhiều thời gian hơn).
- Sao chép hoặc Tải xuống
public.pemvàprivate.pem, và lưu khóa bí mật thật an toàn.
Ví dụ
Độ dài khóa 2048 bit, định dạng PKCS#8 + SPKI
-----BEGIN PUBLIC KEY----- … (khoảng 450 ký tự) và -----BEGIN PRIVATE KEY----- … (khoảng 1700 ký tự)
Khóa là ngẫu nhiên, nên mỗi lần chạy cho một cặp khác nhau.
Khi nào nên dùng Tạo khóa RSA
Dùng cho khóa kiểm thử và phát triển, demo, thử nghiệm JWT RS256 hoặc mã hóa dữ liệu với các công cụ RSA trên trang này. Với máy chủ production, chứng chỉ và SSH, tốt hơn hãy tạo khóa trên chính máy sẽ dùng nó (openssl genpkey, ssh-keygen) để khóa bí mật không bao giờ đi qua trình duyệt. Khóa không được bảo vệ bằng mật khẩu.
Tạo khóa RSA hoạt động như thế nào
crypto.subtle.generateKey chọn hai số nguyên tố ngẫu nhiên p và q có kích thước bằng nửa modulus bằng bộ sinh số an toàn mật mã của trình duyệt, đặt n = p·q, số mũ công khai e = 65537 và số mũ bí mật d = e⁻¹ mod λ(n). Các khóa được xuất dạng DER (SPKI cho khóa công khai, PKCS#8 cho khóa bí mật) và bọc Base64 64 ký tự mỗi dòng thành PEM. Với PKCS#1, cùng khóa đó được mã hóa lại thành RSAPublicKey / RSAPrivateKey. Các khóa dùng được với OpenSSL, OpenSSH (sau khi chuyển đổi), Java, .NET, Node.js và Web Crypto.
Các Trường Hợp Sử Dụng Phổ Biến
- Tạo cặp khóa để kiểm thử mã hóa và giải mã RSA-OAEP
- Tạo khóa RS256 để thử ký JWT cục bộ
- Tạo fixture PEM cho unit test
- Tìm hiểu khác biệt giữa header PEM của PKCS#8, SPKI và PKCS#1
Lưu Ý Bảo Mật
Khóa bí mật được hiển thị dạng văn bản thuần và không có mật khẩu bảo vệ. Hãy lưu nó ở nơi an toàn (trình quản lý mật khẩu, ổ đĩa mã hóa) và đừng bao giờ commit nó vào repository.
Câu Hỏi Thường Gặp
Nên chọn độ dài khóa nào?
2048 bit là mức tối thiểu được chấp nhận hiện nay, tương đương khoảng 112 bit an toàn; 3072 bit (128 bit an toàn) được khuyến nghị cho khóa dùng sau năm 2030. 4096 bit chậm hơn mà lợi ích thực tế không nhiều.
PKCS#8 hay PKCS#1?
PKCS#8 (BEGIN PRIVATE KEY) và SPKI (BEGIN PUBLIC KEY) là các định dạng hiện đại, không phụ thuộc thuật toán, được Web Crypto, Java và OpenSSL 3 sử dụng. PKCS#1 (BEGIN RSA PRIVATE KEY) là định dạng cũ chỉ dành cho RSA mà một số công cụ cũ vẫn yêu cầu.
Khóa có bị gửi lên máy chủ không?
Không. Việc tạo khóa dùng Web Crypto API của trình duyệt và khóa chỉ tồn tại trên trang này cho đến khi bạn đóng nó.
Tôi có dùng khóa cho SSH được không?
Chuyển đổi khóa công khai bằng ssh-keygen -i -m PKCS8 -f public.pem. Với truy cập SSH thật, chạy ssh-keygen trên máy sẽ an toàn hơn.