Bouncy Castle Crypto 套件是加密演算法的 Java 實現,它是由澳洲註冊慈善機構 Legion of the Bouncy Castle 開發的,並提供了一些幫助!軍團以及該軟體包的最新動態可以在 https://www.bouncycastle.org 上找到。
軍團也衷心感謝其他人對此包所做的貢獻(請參閱此處以了解當前列表)。如果您想為我們的努力做出貢獻,請隨時與我們聯繫或訪問我們的捐贈頁面、贊助一些特定工作或透過 Crypto Workshop(現為 Keyfactor 的一部分)購買支援合約。
該套件的組織方式使其包含適合在任何環境(包括新發布的 J2ME)中使用的輕量級 API,以及使演算法符合 JCE 框架的附加基礎架構。
除非另有說明,本軟體是根據 MIT X Consortium 授權分發的。若要查看許可證,請參閱此處。 OpenPGP 庫還包括修改後的 BZIP2 庫,該庫根據 Apache 軟體許可證版本 2.0 獲得許可。
注意:此原始碼樹不是 API 的 FIPS 版本 - 如果您對我們的 FIPS 版本感興趣,請直接透過 [email protected] 與我們聯繫。
檔案 bc_maven_public_key.asc 包含用於在 Maven Central 上簽署我們的工件的公鑰。您將需要使用
gpg -o bc_maven_public_key.gpg --dearmor bc_maven_public_key.asc
使用前請先清除鑰匙。完成後,可以使用以下方法驗證文件:
gpg --no-default-keyring --keyring ./bc_maven_public_key.gpg --verify file_name.jar.asc file_name.jar
注意:密鑰檔名前面需要 ./ 來告訴 gpg 在本地查找。
現在可以使用 JDK21 建置和測試該專案。
如果建置腳本偵測到 BC_JDK8、BC_JDK11、BC_JDK17,它將向通常的測試任務新增對專門使用這些環境變數所尋址的 JVM 的測試任務的依賴關係。該腳本依賴 JAVA_HOME 來取得 Java 21(如果使用)。
我們支援在特定 JVM 上進行測試,因為這是確定庫相容的唯一方法。
以下環境變數可以選擇指向每個 JVM 版本的 JAVA_HOME。
export BC_JDK8=/path/to/java8 export BC_JDK11=/path/to/java11 export BC_JDK17=/path/to/java17
該專案現在使用gradlew
,可以呼叫它,例如:
# from the root of the project # Ensure JAVA_HOME points to JDK 21 or higher JAVA_HOME or that # gradlew can find a java 21 installation to use. ./gradlew clean build
gradle 腳本將盡力驗證它們的存在,但不驗證其值的正確性。
一些子項目產生多版本 jar,這些 jar 可以專門在不同的 jvm 版本上進行測試。
如果定義了環境變數:
export BC_JDK8=/path/to/java8 export BC_JDK11=/path/to/java11 export BC_JDK17=/path/to/java17
如果僅存在 Java 21 JDK,則僅執行正常測試任務和 test21。
用於 JDK 1.1 到 JDK 1.3 的 clean room JCE 位於 jce/src/main/java 目錄中。從 JDK 1.4 及更高版本開始,JCE 隨 JVM 一起提供,更高版本 JDK 的源代碼遵循 JCE 更高版本中取得的進展。如果您使用的是 JCE 安裝隨附的更高版本的 JDK,請不要將jce 目錄作為來源檔案包含在內,因為它將與隨 JDK 安裝的 JCE API 發生衝突。
核心模組提供輕量級 API 中的所有功能。
prov模組提供所有 JCA/JCE 提供者功能。
util模組是程式碼的所在地,其他模組使用的程式碼不需要在 prov 中。目前,這主要是 PKIX 模組的 ASN.1 類別。
pkix模組是 X.509 憑證產生程式碼和依賴 ASN.1 標準(例如 CMS、TSP、PKCS#12、OCSP、CRMF 和 CMP)的 API 的所在地。
郵件模組提供了建構在 CMS 之上的 S/MIME API。
pg模組是用於支援 OpenPGP 的程式碼的所在地。
tls模組是用於通用 TLS API 和 JSSE Provider 的程式碼的所在地。
完整發行版附帶的建置腳本允許使用不同的原始碼樹創建不同的版本,同時排除不合適的類,並從包含適合該發行版的兼容性類的目錄中複製所需的兼容性類。
如果您想嘗試使用自己的環境為自己創建構建,最好的方法是從您感興趣的發行版的構建開始,確保構建成功,然後修改構建腳本以執行以下操作:設置所需的排除項和文件副本,否則您可能會遇到找不到類別的異常。最後要注意的是,由於 j2me 發行版包含一些從 java 套件開始的兼容性類,因此在嘗試使用 BC API 導入 midlet 之前,您需要使用混淆器來更改套件名稱。
重要提示:如果您想執行測試,您還需要檢查與 bc-java 儲存庫相同層級的 bc-test-data 儲存庫。
要查看一些範例,請查看套件中的測試程序:
org.bouncycastle.crypto.test
org.bouncycastle.jce.provider.test
org.bouncycastle.cms.test
org.bouncycastle.mail.smime.test
org.bouncycastle.openpgp.test
org.bouncycastle.tsp.test
還有一些處理 SMIME 和 OpenPGP 的具體範例程式。它們可以在以下位置找到:
org.bouncycastle.mail.smime.examples
org.bouncycastle.openpgp.examples
對於有興趣的人,有 2 個郵件清單可供參與該專案。要訂閱,請使用下面的鏈接,並在訊息正文中包含“訂閱”一詞。 (要取消訂閱,請將訊息正文中的subscribe替換為unsubscribe )
宣布加密請求@bouncycastle.org
此郵件清單僅用於新版本公告,一般訂閱者不能向其發布。
[email protected]
此郵件清單用於討論包的開發。這包括錯誤、評論、增強請求、有關使用或操作的問題。
注意:您需要訂閱才能將郵件傳送到上述郵件清單。
如果您想直接向軍團成員提供回饋,請使用[email protected],如果您想幫助該計畫生存,請考慮捐贈。
對於錯誤報告/請求,您可以在 github 上報告問題,或者如果需要,可以透過 Feedback-crypto 報告問題。我們也將接受基於此儲存庫的拉取請求,但前提是所包含的任何程式碼都可以在 Bouncy Castle 許可證下分發。
享受!