你如何转换JCE算法名称为AlgorithmIdentifier中的对象?(How do you c

2019-09-28 20:04发布

我使用BouncyCastle的1.54。

我有一个JCE算法串 - 像“ECDSAwithSHA256”(例如)。

我需要一个org.bouncycastle.asn1.x509.AlgorithmIdentifier对象。

或者,我可以创建从OID在AlgorithmIdentifier对象,但回避了如何进行运算,而不是字符串翻译成OID的问题。

我可以创建一个巨大的if / else,但一定是这样做的标准方式。

Answer 1:

您可以使用BouncyCastle的的算法发现者(见的javadoc )

import org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder;
import org.bouncycastle.operator.DefaultSignatureAlgorithmIdentifierFinder;

AlgorithmIdentifier sigAlgId = new DefaultSignatureAlgorithmIdentifierFinder().find(signatureAlgorithm);
AlgorithmIdentifier digAlgId = new DefaultDigestAlgorithmIdentifierFinder().find(sigAlgId);

AlgorithmIdentifier OID对获得SHA256withECDSA (不ECDSAwithSHA256 ,见BouncyCastle的规格 )会

1.2.840.10045.4.3.2
2.16.840.1.101.3.4.2.1


文章来源: How do you convert a JCE algorithm name into an AlgorithmIdentifier object?