如何将 JCE 算法名称转换为算法标识符对象



我正在使用BouncyCastle 1.54。

我有一个JCE算法字符串 - 例如"ECDSAwithSHA256"。

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

或者,我可以从 OID 创建一个算法标识符对象,但这回避了如何将算法字符串转换为 OID 的问题。

我可以创建一个巨型if/else,但必须有一种标准方法来做到这一点。

您可以使用 BouncyCastle 的算法查找器(参见 javadoc)

import org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder;
import org.bouncycastle.operator.DefaultSignatureAlgorithmIdentifierFinder;
AlgorithmIdentifier sigAlgId = new DefaultSignatureAlgorithmIdentifierFinder().find(signatureAlgorithm);
AlgorithmIdentifier digAlgId = new DefaultDigestAlgorithmIdentifierFinder().find(sigAlgId);

SHA256withECDSA获得的 OID AlgorithmIdentifier(不是ECDSAwithSHA256,请参阅充气堡规格)将是

1.2.840.10045.4.3.2
2.16.840.1.101.3.4.2.1

最新更新