【发布时间】: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