Chủ yếu là lừa đảo https://stackoverflow.com/questions/20065304/differences-between-begin-rsa-private-key-and-begin-private-key
Trong các phiên bản gần đây của OpenSSL, không có sự khác biệt nào trong việc tạo khóa được thực hiện theo mặc định, như bạn đã sử dụng. Trong 1.0.0 (năm 2010) thị tộc
mặc định là 512 bit trong khi genpkey
mặc định là 1024 bit và tất nhiên là trong 0.9.x genpkey
không tồn tại. Trên tất cả các phiên bản có cả hai lệnh, có sự khác biệt trong các tùy chọn khác mà bạn có thể thêm, một số trong đó thay đổi việc tạo khóa.
Đầu ra định dạng khác nhau, nhưng chứa cùng một thông tin hiệu quả và có thể được chuyển đổi dễ dàng và không mất dữ liệu. Như trong Q được liên kết ở trên:
loại PEM [BEGIN/END] RSA PRIVATE KEY
là định dạng 'truyền thống' hoặc 'kế thừa' của OpenSSL, có nội dung được xác định bởi PKCS1v2.0 = RFC2437 phần 11.1.2 (đã chuyển sang Phụ lục C trong các phiên bản sau nhưng v2.0 gần giống với thời điểm SSLeay sử dụng nó, sau này trở thành OpenSSL).
Trong PEM (chứ không phải DER), cũng có dạng truyền thống/PKCS1 được mã hóa sử dụng cùng một nhãn nhưng thêm các dòng tiêu đề cho loại Proc
và DEK-thông tin
.
loại PEM [BEGIN/END] KHÓA RIÊNG TƯ
được định nghĩa bởi RFC7468 phần 10 với nội dung được xác định bởi PKCS8 = RFC5208 phần 5 được thêm vào OpenSSL khoảng năm 1999 nhưng được mô tả là 'mới' cho đến khoảng năm 2015. Định dạng PKCS8 xử lý nhiều thuật toán mã hóa (không chỉ RSA) bằng cách chứa 'AlgorithmIdentifier' (cú pháp ASN.1 cụ thể mượn từ X.509/PKIX=RFC5280 phần 4.1.1.2, 4.1.2.3, 4.1.2.7 cộng với dữ liệu dành riêng cho thuật toán được bao bọc mà đối với RSA có cùng cấu trúc PKCS1 ở trên.
Ngoài ra còn có một hình thức PKCS8 được mã hóa với loại PEM [BEGIN/END] KHÓA RIÊNG TƯ ĐƯỢC MÃ HÓA
-- xem các phần trong RFC7468 và RFC5208 ngay sau các liên kết ở trên. Biểu mẫu được mã hóa này cũng được hỗ trợ trong DER, nhưng điều đó không liên quan đến Q của bạn.
Định dạng truyền thống có thể được chuyển đổi thành PKCS8 không được mã hóa bằng cách
openssl pkey -in old -out new # trong 1.0.0 trở lên
openssl pkcs8 -topk8 -nocrypt -in old -out new # trong tất cả các phiên bản
và định dạng PKCS8 có thể được chuyển đổi thành PKCS1 không được mã hóa bởi
openssl rsa -in mới -out cũ
Ngoài ra còn có các chuyển đổi sang các hình thức được mã hóa, mà thị tộc
và genpkey
cũng có thể tạo nhưng không làm như vậy theo mặc định.