为了账号安全,请及时绑定邮箱和手机立即绑定

SHA1withECDSA 使用的是哪条曲线?

SHA1withECDSA 使用的是哪条曲线?

料青山看我应如是 2022-12-15 17:00:33
我正在使用 SHA1withECDSA 来验证我的 Java 应用程序中的签名消息。现在我想用另一种编程语言(node/js)创建第二个应用程序来创建这些签名消息。但是我找不到任何具有“SHA1withECDSA”的 api。它们都只支持具有选定曲线的 ECDSA。所以我的问题是:java 使用的是哪条 ec 曲线?关键工厂: final KeyFactory keyFactory = KeyFactory.getInstance("EC");签名: final Signature dsa = Signature.getInstance("SHA1withECDSA");
查看完整描述

1 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

{hash}withECDSAJava 中的算法支持可以在ECPrivateKey传递给对象Signature.initSign(key)或(您的情况)ECPublicKey传递给Signature.initVerify(key)标准 SunEC 提供者的对象中表示的任何曲线,这些曲线是 X9.62 (Weierstrass) form 表示的任何曲线。除了Bernstein 等人的{Curve,X,Ed}{25519,448}(EdDSA 是一种椭圆曲线签名算法,但不是名为 ECDSA的算法),这基本上是当今使用的所有算法。


标准 X9/NIST 和 TLS 曲线是预定义的,尽管(编辑)访问它们而不是生成密钥有点笨拙;请参阅如何将公共 EC 代码点和曲线名称转换为 PublicKey?.


通常,密钥对应由签名者生成,并且(仅)将公钥在签名和签名数据之前或与签名和签名数据一起分发给验证者;通常这是以证书的形式完成的,这样可以避免产生漏洞的手动操作和手动错误。Java 直接支持 X.509 证书,以及它们使用的公钥格式(SubjectPublicKeyInfo aka SPKI);请参阅 和 的java.security.spec.X509EncodedKeySpecjavadoc java.security.Key。对于 EC,SPKI 包括曲线标识,但不幸的是,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:


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信