Java6提供了多种算法支持,但并不完善,许多加密强度较高的算法,Java6未能提供。Bouncy Castle就是对Oracle提供的算法进行了扩展,比如IDEA、MD4、Rijndael、Serpent、Twofish等算法。关于更多Bouncy Castle的知识,请Google之,下面介绍如何在JDK中配置它。

2.2、方式一

Java6提供了多种算法支持,但并不完善,许多加密强度较高的算法,Java6未能提供。Bouncy Castle就是对Oracle提供的算法进行了扩展,比如IDEAMD4RijndaelSerpentTwofish等算法。关于更多Bouncy Castle的知识,请Google之,下面介绍如何在JDK中配置它。

一、下载Bouncy Castle

来这里下载最新版:http://www.bouncycastle.org/latest_releases.html (目前最新版是146),主要下载这两个文件:bcprov-jdk16-146.jarbcprov-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:

[java]  view plain  copy
  1. Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());  
  2. Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");  
  3. cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".getBytes("UTF-8"), "AES"));  
  4. cipher.doFinal("QWEASDZS".getBytes("UTF-8"));  




发布了30 篇原创文章 · 获赞 0 · 访问量 6673

猜你喜欢

转载自blog.csdn.net/qq_37710756/article/details/80000736