1. 程式人生 > >java加密解密研究2、Bouncy Castle和Commons Codec加密元件

java加密解密研究2、Bouncy Castle和Commons Codec加密元件

在java的加密解密的API中,幾乎各種常用的加密演算法都能找到對應的實現,但還是難免會有遺憾:受出口限制,金鑰長度上不能滿足要求;部分演算法未能支援,如MD4、SHA-224等演算法;API使用起來還不是很方便;一些常用的進位制轉換輔助工具未能提供,如Base64轉換、十六進位制編碼轉換等工具。

所以我們可以使用別的開源組織的專案來代替,例如Bouncy Castle(http://www/bouncycastle.org/)提供了一系列演算法支援實現,並可以躋身於JCE框架之下,以提供者的方式納入其中。還有Commons Codec(http://commons.apache.org/codec/)是國際開源組織Apache旗下的一款開源軟體。

加密元件Bouncy Castle

一、獲得加密元件

可以通過Bouncy Castle提供的下載地址:http://www.bouncycastle.org/latest_releases.html,下載最新的加密元件包,主要是bcprov-jdk16-143.jar和bcprov-ext-jdk16-143.jar兩個檔案,如果你還需要其API的話,還可以下載bcprov-jdk16-143.zip檔案。

二、應用

對於Bouncy Castle提供的擴充演算法支援,我們有兩種方案可選:

1)、配置方式。通過配置JRE環境,使其作為提供者(Provider)提供相應的演算法支援,在程式碼實現層面只需要指定要擴充套件的演算法名稱。

2)、呼叫方式、在呼叫Java API初始化相應的金鑰工廠、金鑰生成器等引擎類之前,通過程式碼將Bouncy Castle提供者引入,獲得擴充套件演算法支援。

①、配置方式

1、開啟%JDK_HOME%\jre\lib\security\java.security檔案,加入Bouncy Castle元件的支援,新增下面這一句:

security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider

2、匯入bcprov-ext-jdk16-143.jar包

將我們之前下載的bcprov-ext-jdk16-143.jar放到%JDK_HOME%\jre\lib\ext目錄下。

3、對%JRE_HOME%目錄的相應配置與上述%JDK_HOME%目錄配置相類似。

②、呼叫方式

將我們之前下載的bcprov-jdk16-143.jar匯入工程即可

這兩種方式各有優點,不過,一般採用第二種方式更加方便。

輔助工具Commons Codec

Commons Codec是Apache旗下的一款開軟體,主要用於編碼格式的轉換,如Base64、二進位制、十六進位制、字符集和Url編碼的轉換。甚至,Commons Codec還提供了語音編碼的轉換。除此之外,Commons Codec還對Java原生的訊息摘要演算法做了良好的封裝,提供了方法的易用性。

一、獲得輔助工具

直接登入Commons Codec官網(http://commons.apache.org/codec/),下載最新的元件包(http://commons.apache.org/codec/download_codec.cgi)。元件包分為兩種壓縮格式tar.gz和.zip。這裡我們選擇下載.zip格式的元件包


二、應用

將下載的commons-codec-1.6-bin.zip解壓,將解壓開的資料夾裡面的commons-codec-1.6.jar包匯入工程即可。