【问题标题】:bouncy castle DefaultSignatureAlgorithmIdentifierFinder NoSuchFieldError: gostR3410_94充气城堡 DefaultSignatureAlgorithmIdentifierFinder NoSuchFieldError: gostR3410_94
【发布时间】:2016-01-22 23:12:10
【问题描述】:

我正在使用 BouncyCastle 库:bcprov-jdk16-146.jar 和 bcpkix-jdk15on-1.54.jar。我正在尝试运行以下 sn-p 代码,其中最后一行抛出 java.lang.NoSuchFieldError: gostR3410_94 我已经尝试研究这个问题但没有发现任何东西 - 我不确定我为什么会遇到这个问题? DefaultSignatureAlgorithmIdentifierFinder 的静态初始化程序中发生错误。使用 java8,我还在 java.security 中添加了 bouncycastle 作为我的安全提供程序。

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
        KeyPair kp = RSAKeyGenerator.generate2();
        AsymmetricKeyParameter privateKey = 
                (AsymmetricKeyParameter) PrivateKeyFactory.createKey(kp.getPrivate().getEncoded());
        AsymmetricKeyParameter publicKey = 
                (AsymmetricKeyParameter) PublicKeyFactory.createKey(kp.getPublic().getEncoded());


    X500NameBuilder x500NameBld = new X500NameBuilder(RFC4519Style.INSTANCE);

    x500NameBld.addRDN(RFC4519Style.c, "AU");
    x500NameBld.addRDN(RFC4519Style.o, "The Legion of the Bouncy Castle");
    x500NameBld.addRDN(RFC4519Style.l, "Melbourne");
    x500NameBld.addRDN(RFC4519Style.st, "Victoria");
    x500NameBld.addRDN(PKCSObjectIdentifiers.pkcs_9_at_emailAddress, "feedback-crypto@bouncycastle.org");

    X500Name subject = x500NameBld.build();

    PKCS10CertificationRequestBuilder requestBuilder = new PKCS10CertificationRequestBuilder(subject, new SubjectPublicKeyInfo(ASN1Sequence.getInstance(kp.getPublic().getEncoded())));

    DefaultSignatureAlgorithmIdentifierFinder sigAlgFinder = new DefaultSignatureAlgorithmIdentifierFinder();

【问题讨论】:

  • 来自 javadocs:“通常,编译器会捕获此错误;如果类的定义发生了不兼容的更改,则此错误只会在运行时发生。”你在用反射和/或动态类加载做一些有趣的事情吗?
  • 不。它位于充气城堡课程的内部。但我发现了我的问题:我需要使用 bcprov-jdk15on-1.54.jar - bcprov-jdk16-146.jar 不兼容!
  • 对不起,我完全错过了你的描述。是的。请将此作为答案发布。

标签: java security bouncycastle


【解决方案1】:

解决此问题的方法是使用早期版本的 Bouncy Castle Provider:bcprov-jdk15on-1.54.jar。这个 jar 兼容bcpkix-jdk15on-1.54.jar。较新的 jar 导致 CryptoProObjectIdentifiers 对象标识符不匹配。

【讨论】:

    猜你喜欢
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 2019-12-29
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    相关资源
    最近更新 更多