1 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個贊
{hash}withECDSAJava 中的算法支持可以在ECPrivateKey傳遞給對象Signature.initSign(key)或(您的情況)ECPublicKey傳遞給Signature.initVerify(key)標(biāo)準(zhǔn) SunEC 提供者的對象中表示的任何曲線,這些曲線是 X9.62 (Weierstrass) form 表示的任何曲線。除了Bernstein 等人的{Curve,X,Ed}{25519,448}(EdDSA 是一種橢圓曲線簽名算法,但不是名為 ECDSA的算法),這基本上是當(dāng)今使用的所有算法。
標(biāo)準(zhǔn) X9/NIST 和 TLS 曲線是預(yù)定義的,盡管(編輯)訪問它們而不是生成密鑰有點(diǎn)笨拙;請參閱如何將公共 EC 代碼點(diǎn)和曲線名稱轉(zhuǎn)換為 PublicKey?.
通常,密鑰對應(yīng)由簽名者生成,并且(僅)將公鑰在簽名和簽名數(shù)據(jù)之前或與簽名和簽名數(shù)據(jù)一起分發(fā)給驗(yàn)證者;通常這是以證書的形式完成的,這樣可以避免產(chǎn)生漏洞的手動操作和手動錯誤。Java 直接支持 X.509 證書,以及它們使用的公鑰格式(SubjectPublicKeyInfo aka SPKI);請參閱 和 的java.security.spec.X509EncodedKeySpecjavadoc java.security.Key。對于 EC,SPKI 包括曲線標(biāo)識,但不幸的是,Java API 沒有提供方便的方法將其取回。
如果您有一個 X.509 證書或文件中公鑰的 X.509 SPKI,無論是 DER 還是 PEM 格式,并且有 OpenSSL,它可以解碼并顯示此信息:
openssl x509 -in certfile -inform {der|pem} -text
openssl pkey -in spkifile -inform {der|pem} -pubin -text # 1.0.0 up
openssl ec -in spkifile -inform {der|pem} -pubin -text # 0.9.x
# look at the line labelled ASN1 OID:
添加回答
舉報