【问题标题】:ECDSA isn't suported in Java 1.8?Java 1.8 不支持 ECDSA?
【发布时间】:2018-03-08 20:17:43
【问题描述】:

我认为在我的机器(Debian 10、linux、JAVA 1.8 OpenJDK)上,Java 不支持 ECDSA。

为什么?因为这行抛出异常:

KeyFactory kf = KeyFactory.getInstance("ECDSA");

但是,例如,如果我将 ECDSA 更改为 RSA,则不会引发异常。

如前所述,我正在使用 Debian GNU/Linux。我应该安装一些软件包或类似的东西吗?

谢谢

【问题讨论】:

  • 你用的是Oracle的jdk还是openjdk或者其他的?我之前注意到不同 jdk 之间的差异。
  • 嘿 Taylor3,我正在使用 openjdk
  • 据我所知,您应该使用"EC" 作为名称,而不是"ECDSA"

标签: java ecdsa


【解决方案1】:

作为KeyFactory,名称似乎只是"EC",而不是"ECDSA"


您可以使用以下代码(Java 5+)列出可用的密钥工厂:

for (Provider provider : Security.getProviders()) {
    System.out.println(provider.getName());
    for (Service service : provider.getServices()) {
        if (service.getType().equals("KeyFactory"))
            System.out.println("  " + service.getAlgorithm());
    }
}

我已经在我的 Windows 7 机器上的各种 Java 版本上运行它。正如您在下面看到的,Java for Windows 带有以下关键工厂:

  • 动态搜索广告
  • RSA
  • EC (Java 7+)
  • RSA
  • DiffieHellman

Java 9.0.1

SUN
  DSA
SunRsaSign
  RSA
SunEC
  EC
SunJSSE
  RSA
SunJCE
  DiffieHellman
SunJGSS
SunSASL
XMLDSig
SunPCSC
JdkLDAP
JdkSASL
SunMSCAPI
SunPKCS11

Java 1.8.0_151

SUN
  DSA
SunRsaSign
  RSA
SunEC
  EC
SunJSSE
  RSA
SunJCE
  DiffieHellman
SunJGSS
SunSASL
XMLDSig
SunPCSC
SunMSCAPI

Java 1.7.0_79

SUN
  DSA
SunRsaSign
  RSA
SunEC
  EC
SunJSSE
  RSA
SunJCE
  DiffieHellman
SunJGSS
SunSASL
XMLDSig
SunPCSC
SunMSCAPI

Java 1.6.0_45

SUN
  DSA
SunRsaSign
  RSA
SunJSSE
  RSA
SunJCE
  DiffieHellman
SunJGSS
SunSASL
XMLDSig
SunPCSC
SunMSCAPI

Java 1.5.0_22

SUN
  DSA
SunRsaSign
  RSA
SunJSSE
  RSA
SunJCE
  DiffieHellman
SunJGSS
SunSASL

【讨论】:

    猜你喜欢
    • 2019-02-24
    • 2020-12-16
    • 1970-01-01
    • 2023-03-16
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    相关资源
    最近更新 更多