簡體   English   中英

Java JCA中的OpenPGP

[英]OpenPGP in Java JCA

我了解OpenPGP是“一組用於加密/簽名的標准格式的定義”

我最近建議某人使用默認的Java JCA而不是bouncycastle作為他們的加密庫,這樣他們就不必使用任何外部庫。 但是后來他們問我Java JCA是否支持OpenPGP。 我不知道那個問題的答案。 我什至不完全知道問題的含義。

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

我們可以使用RSA之類的標准算法對Java JCA進行加密/登錄。 那么,支持OpenPGP還需要做什么呢?

沒有人推薦JCA作為對此問題的答案。

問:我只想知道支持OpenPGP是什么意思?
回答:意味着提供程序庫應遵循RFC 4880中提到的開放PGP標准。

沒有人推薦JCA作為答案...
按照它的復雜性- 如何通過Java的加密擴展對PGP消息進行加密?

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加速不適用於該庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM