当前位置: 代码迷 >> java >> Java JCA中的OpenPGP
  详细解决方案

Java JCA中的OpenPGP

热度:19   发布时间:2023-07-31 10:53:13.0

我了解OpenPGP是 。

我最近建议某人使用默认的而不是bouncycastle作为他们的加密库,这样他们就不必使用任何外部库。 但是后来他们问我Java JCA是否支持OpenPGP。 我不知道那个问题的答案。 我什至不完全知道问题的含义。

我只想知道supporting OpenPGP是什么意思?

我们可以使用RSA之类的标准算法对Java JCA进行加密/登录。 那么,支持OpenPGP还需要做什么呢?

没有人推荐JCA作为的答案。

问:我只想知道支持OpenPGP是什么意思?
回答:意味着提供程序库应遵循提到的开放PGP标准。

没有人推荐JCA作为答案...
按照它的复杂性-

Bouncy castle是Java平台的OpenPGP提供程序之一。
您可以在检查所有平台上的其他实现者。

只要我学习了,作为密码学体系结构的JCA就有自己的设计原则。 JCA是可以与JCE一起使用的基本加密框架。

不,Java JCA是一种加密API。 它不支持任何更高级别的协议 ,只是提供了相对高级别的密码算法访问权限。 当然,有一个用Java实现的值得注意的协议:(单独的)JSSE提供程序中的TLS。 这需要支持使用/验证X.509v3证书等,但仅此而已(出于显而易见的原因,JCA非常倾向于支持TLS作为主要目的)。

另一方面,OpenPGP是Java不支持的协议规范。 您需要在JCA之上构建协议实现以支持OpenPGP。 但是, 这正是Bouncy Castle所做的 它们的实现取决于JCA接口,而不是Bouncy Castle的“轻量级” API。 因此,您可以使用Bouncy Castle的OpenPGP库使用JCA,例如,用于支持AES-NI或硬件密钥。 只需确保要使用的JCA提供程序比任何第三方提供的优先级都高,例如Bouncy Castle提供程序(将其添加到提供程序列表的末尾即可!)。

当然,为了支持某些更深奥的选项(特别是对特定EC曲线的支持),您可能仍想将Bouncy Castle提供程序添加到运行时。 OpenPGP的Maven模块仍将Bouncy Castle提供程序列为编译要求,但是我不确定这是否仅用于测试还是直接需要该库。

一个可能引起麻烦的问题是PGP使用自己的CFB加密算法版本,在我所知的运行时中,默认提供程序无法直接提供该版本。 因此,您可能需要包括该功能的库。 这也可能意味着AES加速不适用于该库。

  相关解决方案