Tôi đang cố chuyển đổi khóa gpg ECC bọc thép thành lớp java tương ứng ECPrivateKey/ECPublicKey.Khóa công khai/riêng tư ECC bọc thép (được tạo từ gpg cli) trong java
Để tạo cặp khóa Tôi đang sử dụng: gpg --expert --full-generate-key
sau đó chọn (9) ECC và ECC (hoặc (10) ECC (chỉ đăng))
Sau đó chọn (3) NIST P- 256
Hệ quả là:
-----BEGIN PGP PUBLIC KEY BLOCK-----
mFIEWUdzwhMIKoZIzj0DAQcCAwQkAvZC1PIJ8ke1myyKhNny9vN78TIYo2MuAOY+
F38L9S3+Za9cKV/iIHOqfapbMoqdSmSnqDkevwQSr5MF2UOXtCJzaWduZWNjIChF
Q0Mgc2lnbiBvbmx5KSA8c3NAc3MuY28+iJAEExMIADgWIQRiC+kefVkjnjKovKy5
XANFl5+n1gUCWUdzwgIbAwULCQgHAgYVCAkKCwIEFgIDAQIeAQIXgAAKCRC5XANF
l5+n1mzGAQDsgutymxDTTXPKFfpFFVp4fxacx1MSqxP71gNJYjguXwD8CEXD20Vm
aU1WMi2jU7JC6oJn94Y4vWHwTLOU1zmQ19o=
=swfS
-----END PGP PUBLIC KEY BLOCK-----
-----BEGIN PGP PRIVATE KEY BLOCK-----
lHcEWUdzwhMIKoZIzj0DAQcCAwQkAvZC1PIJ8ke1myyKhNny9vN78TIYo2MuAOY+
F38L9S3+Za9cKV/iIHOqfapbMoqdSmSnqDkevwQSr5MF2UOXAAD9FhS2HZoWOyIi
l9nj+WPa9S1o50jM5bNIRALzcyS8SgoP97Qic2lnbmVjYyAoRUNDIHNpZ24gb25s
eSkgPHNzQHNzLmNvPoiQBBMTCAA4FiEEYgvpHn1ZI54yqLysuVwDRZefp9YFAllH
c8ICGwMFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQuVwDRZefp9ZsxgEA7ILr
cpsQ001zyhX6RRVaeH8WnMdTEqsT+9YDSWI4Ll8A/AhFw9tFZmlNVjIto1OyQuqC
Z/eGOL1h8EyzlNc5kNfa
=qHBB
-----END PGP PRIVATE KEY BLOCK-----
làm thế nào để tôi nhận được từ định dạng văn bản bọc thép này cho một người java.security.interfaces.ECPrivateKey và java.security.interfaces.ECP hợp lệ ublicKey lớp java?
mục tiêu cuối cùng của tôi là để đăng nhập theo cách sau:
String createSignatureFromJson(String jsonPayload, byte[] privateKey) {
Payload payload = new Payload(jsonPayload)
def key = privateKeyParse(privateKey)
JWSSigner signer = new ECDSASigner((ECPrivateKey)key)
JWSHeader header = new JWSHeader.Builder(JWSAlgorithm.ES256).build()
JWSObject jwsObject = new JWSObject(header, payload)
jwsObject.sign(signer)
jwsObject.signature
}
bạn có thể cụ thể hơn về làm thế nào để nhận được từ khối private key để byte [] tham số privateKey? –
Tôi nhận được java.io.IOException: PGP chưa biết công thuật toán quan trọng gặp trên: PGPSecretKeyRing pgpSecRing = (PGPSecretKeyRing) pgpFact.nextObject() khi cung cấp các khối private key để phương pháp của bạn theo cách sau: privateKeyBlock. split ('\ n'). join(). bytes –
Bạn đang sử dụng phiên bản BC nào? Tôi nghĩ rằng khóa PGP EC chỉ được hỗ trợ từ khoảng 1,50. –