BouncyCastle jce安装详解,已测试
2015-07-07 11:31
274 查看
安装BouncyCastle JCE应该按照如下步骤:
1)下载提供者
BouncyCastle可以从www.bouncycastle.org下载,下载后请将它解压缩。
(http://www.bouncycastle.org/latest_releases.html
下载crypto-145.zip)
2)将JAR文件拷贝到适当位置
如果想让JCE类可以被所有的JAVA应用程序使用,我们需要把JAR文件安装为一个扩展。BouncyCastle提供者没有用于安装为扩展的
JAR类型的文件,但它容易构建。首先将下载的文件展开到JDK的classes目录下(如,将下载的crypto-145.zip解压后,将其中的各文件放入新建的classes文件夹中),然后运行下面的命令将这些文件打包:
首先用cd命令进入classes目录
再c:\...\classes\> jar cvf bouncycastle.jar */.
这样就在classes文件夹中创建的bouncycastle.jar文件。
在Windows中,Java通常安装在两个目录下。一个目录用于开发,包括所有的JDK工具,另一个仅仅是运行环境。JDK本身通常位于
c:\jdk1.6这样的目录下,而JDK运行环境通常位于c:\Program
files\JavaSoft\JRE1.6这样的目录下,它们都有库的扩展目录。分别是:c:\jdk1.6.0\jre\lib\ext和c:
\Program
files\JavaSoft\JRE\1.6\lib\ext,把所要的JAR文件放于对应的目录下(两个目录都要放)。
3)配置安全属性文件
安全属性文件java.security位于和\lib\ext平行的另一个目录\lib\security下,它定义了当前可以使用的加密提供者。如您看到下面的语句:
security.provider.1=sun.security.provider.Sun
security.provider.2=com.sun.rsajca.Provider
它表明本虚拟机有两个加密提供者以及他们的优先级和访问时使用的名称。当需要用到一个加密算法时,虚拟机会依次访问这里列出的提供者,寻找想要的算法,并按这里的优先级顺序使用第一个找到的算法。
我们应该在文件中插入如下行,把新的提供者加入进去(两个java.security都要加入):
security.provider.3=org.bouncycastle.jce.provider.BouncyCastleProvider
注意大小写
当然了,你也可以将前面的加密提供者配置删除,这样就不能使用jdk默认的加密提供者了。
4)测试安装好的程序
我们可以自己写一个测试程序JCEInstallTest
.java(用JCE包的API),来判断我们的安装是否成功。程序内容如下:
import javax.crypto.*;
public class JCEInstallTest{
public static final String stringToEncrypt="This is a test.";
public static void main(String[] args) throws Exception{
System.out.print("Attempting to get a Blowfish key...");
KeyGenerator
keyGenerator=KeyGenerator.getInstance("Blowfish");
keyGenerator.init(128);
SecretKey key=keyGenerator.generateKey();
System.out.println("OK");
System.out.println("Attempting to get a Cipher and
encrypt...");
Cipher
cipher=Cipher.getInstance("Blowfish/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE,key);
byte[]
cipherText=cipher.doFinal(stringToEncrypt.getBytes("UTF8"));
System.out.println("OK");
System.out.println("Test completed successfully.");
}
}
编译:Javac JCEInstallTest.java 无错
运行:Java JCEInstallTest 出结果
即证明bouncycastle jce安装配置正确。
1)下载提供者
BouncyCastle可以从www.bouncycastle.org下载,下载后请将它解压缩。
(http://www.bouncycastle.org/latest_releases.html
下载crypto-145.zip)
2)将JAR文件拷贝到适当位置
如果想让JCE类可以被所有的JAVA应用程序使用,我们需要把JAR文件安装为一个扩展。BouncyCastle提供者没有用于安装为扩展的
JAR类型的文件,但它容易构建。首先将下载的文件展开到JDK的classes目录下(如,将下载的crypto-145.zip解压后,将其中的各文件放入新建的classes文件夹中),然后运行下面的命令将这些文件打包:
首先用cd命令进入classes目录
再c:\...\classes\> jar cvf bouncycastle.jar */.
这样就在classes文件夹中创建的bouncycastle.jar文件。
在Windows中,Java通常安装在两个目录下。一个目录用于开发,包括所有的JDK工具,另一个仅仅是运行环境。JDK本身通常位于
c:\jdk1.6这样的目录下,而JDK运行环境通常位于c:\Program
files\JavaSoft\JRE1.6这样的目录下,它们都有库的扩展目录。分别是:c:\jdk1.6.0\jre\lib\ext和c:
\Program
files\JavaSoft\JRE\1.6\lib\ext,把所要的JAR文件放于对应的目录下(两个目录都要放)。
3)配置安全属性文件
安全属性文件java.security位于和\lib\ext平行的另一个目录\lib\security下,它定义了当前可以使用的加密提供者。如您看到下面的语句:
security.provider.1=sun.security.provider.Sun
security.provider.2=com.sun.rsajca.Provider
它表明本虚拟机有两个加密提供者以及他们的优先级和访问时使用的名称。当需要用到一个加密算法时,虚拟机会依次访问这里列出的提供者,寻找想要的算法,并按这里的优先级顺序使用第一个找到的算法。
我们应该在文件中插入如下行,把新的提供者加入进去(两个java.security都要加入):
security.provider.3=org.bouncycastle.jce.provider.BouncyCastleProvider
注意大小写
当然了,你也可以将前面的加密提供者配置删除,这样就不能使用jdk默认的加密提供者了。
4)测试安装好的程序
我们可以自己写一个测试程序JCEInstallTest
.java(用JCE包的API),来判断我们的安装是否成功。程序内容如下:
import javax.crypto.*;
public class JCEInstallTest{
public static final String stringToEncrypt="This is a test.";
public static void main(String[] args) throws Exception{
System.out.print("Attempting to get a Blowfish key...");
KeyGenerator
keyGenerator=KeyGenerator.getInstance("Blowfish");
keyGenerator.init(128);
SecretKey key=keyGenerator.generateKey();
System.out.println("OK");
System.out.println("Attempting to get a Cipher and
encrypt...");
Cipher
cipher=Cipher.getInstance("Blowfish/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE,key);
byte[]
cipherText=cipher.doFinal(stringToEncrypt.getBytes("UTF8"));
System.out.println("OK");
System.out.println("Test completed successfully.");
}
}
编译:Javac JCEInstallTest.java 无错
运行:Java JCEInstallTest 出结果
即证明bouncycastle jce安装配置正确。
相关文章推荐
- android工程版key
- Listview高亮,是焦点回滚还是高亮
- 在stemapp/widgets/HeaderCrossMenu/Widget.js中实现了对config.json配置文件的读取
- CSS3:clip-path详解
- Quartz集群配置
- 大写URL转小写
- Java Next: Groovy、Scala or Clojure?
- linux ACL
- Chrome 和 Safari 对日期格式的兼容问题
- JEECG部署的几个问题
- 执行SQL的DbHelperSQL
- java 中精度受损的一种转换计算方式
- background-attachment:fixed实现背景固定的效果
- Subsets II
- 黑马程序员——OC—OC中的面向对象
- [LeetCode] HouseRobber
- Ehcache——监听器
- Scaleform 中的 3D视角相关研究
- redis批量删除key
- ping的简单运用