Lý lịch
Tôi đang cố gắng hiểu cách nội dung PEM được định dạng cho "Khóa riêng EC", ví dụ: sau đây là khóa riêng
-----BẮT ĐẦU THÔNG SỐ EC-----
BgUrgQQAIw==
----- KẾT THÚC THÔNG SỐ EC -----
----- BEGIN KHÓA RIÊNG TƯ EC -----
MIHcAgEBBEIAavpiUck1lQc01A6FH1SE1XSwW4C+i354tOQyPjioSnq5lzc9YQXX
yAIiC6hiMhARzBxe2vmYBeCEENlmCG0jNymgBwYFK4EEACOhgYkDgYYABAEyMQ/2
NkU0LHTBhpsbeaFklNSXUeG2znLuFvcb0hvc29R5ydz8/dpDOhhEtT3+SRiYOmbS
f5wQRRWyf872XFtxhgGp6MFrfHL0c2ofvYIfxLJPXSnq+GCqOKi83GwKITfkkd9N
iwfW7YlKbAQPSoPcCoPG+cNCMLs3FLN/6fD6K99R/w==
-----KHÓA RIÊNG TƯ KẾT THÚC EC-----
được tạo bằng lệnh openssl sau đây trong trường hợp bất kỳ ai muốn xem
openssl ecparam -out ecc_private_key.key -name secp521r1 -genkey
Gần đây tôi nhận ra rằng nội dung ở giữa ----- KHÓA RIÊNG TƯ XXX EC -----
không chỉ chứa khóa riêng và không thể sử dụng Tham số "D" trong phương trình đường cong elip. Vì vậy, bằng cách sử dụng lệnh sau, tôi có thể tìm thấy các phần tử riêng lẻ cũng được đưa ra bên dưới;
$ openssl ec -in ecc_private_key.key -noout -text
đọc khóa EC
Khóa riêng: (521 bit)
riêng tư:
00:6a:fa:62:51:c9:35:95:07:34:d4:0e:85:1f:54:
84:d5:74:b0:5b:80:be:8b:7e:78:b4:e4:32:3e:38:
a8:4a:7a:b9:97:37:3d:61:05:d7:c8:02:22:0b:a8:
62:32:10:11:cc:1c:5e:da:f9:98:05:e0:84:10:d9:
66:08:6d:23:37:29
quán rượu:
04:01:32:31:0f:f6:36:45:34:2c:74:c1:86:9b:1b:
79:a1:64:94:d4:97:51:e1:b6:ce:72:ee:16:f7:1b:
d2:1b:dc:db:d4:79:c9:dc:fc:fd:da:43:3a:18:44:
b5:3d:fe:49:18:98:3a:60:52:7f:9c:10:45:15:b2:
7f:ce:f6:5c:5b:71:86:01:a9:e8:c1:6b:7c:72:f4:
73:6a:1f:bd:82:1f:c4:b2:4f:5d:29:ea:f8:60:aa:
38:a8:bc:dc:6c:0a:21:37:e4:91:df:4d:8b:07:d6:
ed:89:4a:6c:04:0f:4a:83:dc:0a:83:c6:f9:c3:42:
30:bb:37:14:b3:7f:e9:f0:fa:2b:df:51:ff
ASN1 OID: secp521r1
ĐƯỜNG CONG NIST: P-521
Câu hỏi:
Tôi muốn biết rằng cách openssl có thể giải mã nội dung Base64 và trích xuất khóa riêng và khóa chung ra khỏi nội dung đó.
Tôi hiện đang xử lý một ứng dụng không tích hợp bất kỳ khả năng PemReader nào, vì vậy tôi muốn viết triển khai PemReader của riêng mình để tôi có thể giải mã thông tin này trong ứng dụng của mình (hiện chỉ có các khóa EC)
PS: Mình đã trải qua rồi RFC5915 theo đó Khóa riêng phải bắt đầu bằng 1 (phiên bản) nhưng tất cả khóa tôi tạo bằng openssl luôn bắt đầu bằng 0x30. Vì vậy, tôi đang thiếu một cái gì đó tất nhiên