我知道OpenPGP是“一组加密/签名标准格式的定义”。
我最近建议有人使用默认的Java JCA而不是赏金城堡作为他们的加密库,这样他们就不必使用任何外部库了。但是他们问我Java是否支持OpenPGP。我不知道那个问题的答案。我甚至不知道这个问题是什么意思。
我只想知道supporting OpenPGP是什么意思
我们可以使用像RSA这样的标准算法在Java中加密/签名。那么,支持OpenPGP还需要什么呢?
没有人推荐JCA作为这个问题的答案。
发布于 2019-02-13 10:38:58
问:我只想知道支持OpenPGP意味着什么?
Ans :意味着提供者库应该遵循RFC 4880中提到的开放的PGP标准。
没有人推荐JCA作为答案..。
它非常复杂,如per-如何通过java的密码扩展加密PGP消息?
Bouncy城堡是的OpenPGP提供者之一。 您可以检查所有平台上的其他实现者,这里。 只要我学习,JCA作为密码学的体系结构就有它自己的设计原则。JCA是一个基本的密码框架,可以与JCE一起使用。
发布于 2019-02-13 15:33:55
不,Java是一个加密API。它不支持任何更高级别的协议,它只是提供了相对较高级别的加密算法访问权限。当然,在Java中实现了一个值得注意的协议:(单独) JSSE提供程序中的TLS。这需要支持使用/验证X.509v3证书等,但这就是其中之一(基于显而易见的原因,JCA非常支持将TLS作为主要用途)。
另一方面,OpenPGP是一种不受Java支持的协议规范。您需要在JCA之上构建一个协议实现来支持OpenPGP。然而,这正是Bouncy城堡所做的事情;它们的实现依赖于JCA接口,而不是Bouncy城堡“轻量级”API。因此,您可以使用OpenPGP库和JCA,例如,用于支持AES-NI或硬件密钥。只需确保您想要使用的JCA提供程序比任何第三方提供程序都具有更多的优先级,例如Bouncy城堡提供程序(将其添加到提供者列表的末尾!)。
当然,为了支持一些更深奥的选项(特别是对特定EC曲线的支持),您可能仍然希望在运行时中添加Bouncy城堡提供程序。OpenPGP的Maven模块仍然将Benniy城堡提供程序列为编译需求,但我不确定这不仅仅是用于测试,还是直接需要库。
一个可能很麻烦的问题是,PGP使用了它自己版本的CFB加密算法,在我所知道的运行时,它不能直接从默认提供程序中获得。因此,您可能需要包含该功能的库。这也可能意味着AES加速对库不可用。
https://stackoverflow.com/questions/54666927
复制相似问题