2014-04-25 30 views
2

我可以从X509Certificate实例(如"SHA256WithRSA")中提取OID和签名算法的名称,但是如何提取摘要算法的名称(例如, "SHA256"如何从X509Certificate中提取摘要算法

除了字符串拆分"with"或OID的固定映射吗?

侧面问题:拆分"with"是否安全?

回答

2

证书仅包含映射到唯一对摘要/算法的签名算法OID。因此,找到摘要算法的最简单方法是使用映射表OID - >摘要算法。

不幸的是,我知道没有集中的位置,你可以找到这些OID。不过,他们可以在这些RFC收集:

解析算法名称和分裂的 “使用” 应该工作,但这些限制

  • 它只能与Oracle加密提供程序一起使用(请参阅有关signature algorithm naming conventions的文档)。另一个提供者使用其自己的证书实现,可能会使用另一个不兼容的命名约定。
  • 如果算法未知,getSigAlgName()方法将返回形式为OID.a.b.c.d...的字符串。例如旧的Java6不支持SHA256withDSA算法,并且将被打印OID.2.16.840.1.101.3.4.3.2