- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 BouncyCaSTLe 检查 XMLSignature 以验证使用 ECDSA 的签名时遇到问题。
以下是相关的代码行:
BouncyCastleProvider provider = new BouncyCastleProvider();
Security.addProvider(provider);
//some unrelated code
XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM", provider);
在最后一行,抛出以下异常:
javax.xml.crypto.NoSuchMechanismException: java.security.NoSuchAlgorithmException: no such algorithm: DOM for provider SC
如果我将行更改为
XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM");
我明白了
javax.xml.crypto.MarshalException: unsupported SignatureMethod algorithm: http://www.w3.org/2007/05/xmldsig-more#ecdsa-ripemd160
有人知道是什么原因造成的吗?
最佳答案
在您的第一个错误中,您可以在错误描述中读到“没有这样的算法:提供商 SC 的 DOM”。这很奇怪,因为它说的是“供应商 SC”(Sun PC/SC 供应商)而不是它应该说的“供应商 BC”(BouncyCaSTLe 安全供应商)。看起来您的代码(内部)没有按照您的意愿使用 BouncycaSTLe。您应该找出发生这种情况的原因。它可能与 BC 库和类路径(如果您正在使用应用程序服务器)或提供商订单配置有关。
第二个错误。您更改获取 XMLSignatureFactory 的方法。这个更好,因为如果你不指定提供者,因为:
This method uses the standard JCA provider lookup mechanism to locate and instantiate an XMLSignatureFactory implementation of the desired mechanism type. It traverses the list of registered security Providers, starting with the most preferred Provider. A new XMLSignatureFactory object from the first Provider that supports the specified mechanism is returned.
但是现在,算法不存在了。所以为什么?在这里,我会说 BC 没有被使用。它在那里?检查您的类路径。
列出所有可用的提供程序可能会有所帮助:
for (Provider p : Security.getProviders()) {
log.debug(p.getName());
log.debug(p.getInfo());
}
关于java - BouncycaSTLe XmlSignatureFactory NoSuchAlgorithmException 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11716579/
我在使用 BouncyCaSTLe 检查 XMLSignature 以验证使用 ECDSA 的签名时遇到问题。 以下是相关的代码行: BouncyCastleProvider provider = n
我是一名优秀的程序员,十分优秀!