2.2、方式一
Java6提供了多种算法支持,但并不完善,许多加密强度较高的算法,Java6未能提供。Bouncy Castle就是对Oracle提供的算法进行了扩展,比如IDEA、MD4、Rijndael、Serpent、Twofish等算法。关于更多Bouncy Castle的知识,请Google之,下面介绍如何在JDK中配置它。
一、下载Bouncy Castle
来这里下载最新版:http://www.bouncycastle.org/latest_releases.html (目前最新版是146),主要下载这两个文件:bcprov-jdk16-146.jar、bcprov-ext-jdk16-146.jar,如下图:
二、配置Java.security
用记事本打开%JDK_Home%\ jre\lib\security\java.security文件,找到如下9行代码:
security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=com.sun.net.ssl.internal.ssl.Provider
security.provider.4=com.sun.crypto.provider.SunJCE
security.provider.5=sun.security.jgss.SunProvider
security.provider.6=com.sun.security.sasl.Provider
security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.8=sun.security.smartcardio.SunPCSC
security.provider.9=sun.security.mscapi.SunMSCAPI
在这9行之后添加如下两行代码:
#增加BouncyCastleProvider
security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider
保存Java.security文件。
同样修改%JRE_Home%\lib\security\java.security文件,加入以上两行,保存文件。
三、导入jar文件
分别复制bcprov-ext-jdk16-146.jar到"%JDK_Home%\jre\lib\ext"和"%JRE_Home%\lib\ext"目录下。
配置完成!
2.2、方式二
(1)在代码中通过maven引入BouncyCastle的包
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.56</version>
</dependency>
(2)无需像方式1 一样修改配置文件,直接在代码中手动添加provider:
- Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
- Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
- cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".getBytes("UTF-8"), "AES"));
- cipher.doFinal("QWEASDZS".getBytes("UTF-8"));