使用Bouncy Castle API加密和解密

2021-09-01 03:25:19 字數 1814 閱讀 9570

15.3.2 使用bouncy castle api加密和解密

bouncy castle api通過加密引擎(位於org.bouncycastle.crypto.引擎中)來提供密碼實現,這些引擎實現了特定的介面,比如 asymmetricblockcipher、blockcipher或streamcipher(所有這些介面都可以在 org.bouncycastle.crypto包中找到)。這些介面都具有乙個共同的用途:它們讓你初始化密碼,以位元組陣列的形式提供要被加密或解密的 資料(既可以以塊的形式也可以作為訊息流的一部分提供),然後執行加密或解密操作。與使用jca和satsa-crypto api一樣,當初始化乙個密碼實現時,你指定想要該實現執行加密還是解密,以及操作中要使用的金鑰細節。使用bouncy castle api通過rc4演算法執行加密,可以編寫如**清單15-6所示的**。

**清單15-6 使用bouncy castle api執行rc4加密

與生成訊息摘要時一樣,bouncy castle api的介面在概念上類似於jca和satsa-crypto api,但並不完全相同。再一次,直接例項化引擎,而不是使用乙個工廠建立想要的密碼引擎。通過類似方法初始化生成的引擎,指定想要引擎進行加密(傳遞 true)還是解密(傳遞false),以及引擎的init方法的一些選項。最後,將要加密或解密的位元組傳遞給引擎以供處理。引擎接受你想要其處理的位元組 的方式取決於它實現的是塊密碼還是流密碼。使用processblock方法將位元組傳遞給塊密碼或非對稱塊密碼,每次傳遞乙個完整的塊。可以呼叫 getblocksize方法來確定塊密碼的塊大小,或分別呼叫getinputblocksize和getoutputblocksize方法來確定非 對稱塊密碼的輸入塊和輸出塊的大小。使用processbytes方法將位元組傳遞給流密碼。

無論處於哪種情形,密碼引擎都會將結果返回給你呼叫的方法以供處理。此方法可能丟擲多個異常中的乙個,如果資料陣列的長度無效,則丟擲datalengthexception,或者如果初始化密碼失敗,則丟擲illegalstateexception。

此示例使用rc4演算法(一種安全性相對較弱的演算法),但bouncy castle api中還包含許多有其他支援的密碼演算法。與satsa-crypto api不同,這些演算法可同時針對對稱和非對稱密碼進行實現,因此,同時需要公鑰密碼的加密和解密功能的應用程式可使用bouncy castle api獲益,而使用satsa-crypto api則不能實現此目的。

除了支援許多不同密碼演算法,bouncy castle api還為其支援的密碼提供了金鑰生成演算法。這是該api的乙個重要特性,因為在編寫應用程式時,安全的金鑰生成和分發至關重要。 org.bouncycastle.crypto.generators包含的類中包括受支援的密碼的生成器;建立金鑰只需建立合適的生成器並呼叫乙個方 法。例如,要為des建立乙個隨機金鑰,可以編寫**清單15-7中所示的**。

**清單15-7 生成隨機金鑰

一些金鑰生成器必須首先進行初始化,因此需要確保檢查了所選的密碼系統和金鑰生成器的文件。這些金鑰生成器通常提供了公鑰密碼演算法的金鑰,其中包括兩個金鑰(乙個是分發給其他團體的公鑰,另乙個是用於解密的私鑰),這兩個金鑰分別用於訊息加密和解密。

注意 儘管安全金鑰生成是bouncy castle api提供的乙個重要功能,但僅適用該功能還遠遠不夠。應用程式使用其金鑰的方式與建立金鑰的方式同樣重要;弱儲存或交換(比如通過不安全的網路通道共享對稱密碼演算法的金鑰)抵消了出色的金鑰生成演算法的強大作用。

使用GraphEdit使用

1 註冊元件。其實乙個filter就是乙個com元件,所以使用之前需要註冊,可以有兩種方法對元件進行註冊。1.直接使用命令。命令列下輸入 regsvr32 hqtlystd.ax 編譯之後你會在工程目錄下的debug中找到hqtlystd.ax,這個就是要用的filter 即可註冊成功。2.vc6....

MySQL使用學習使用 mysql學習使用

1 mysql學習 1 安裝 ubuntu下直接安裝 apt get install mysql server 2 檢查伺服器是否啟動 sudo netstat tap grep mysql,如果啟動成功,出現以下資訊 tcp00localhost.localdomain mysql listen ...

學習使用CSDN markdown使用

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...