BouncyCastle使用
2017-12-21 18:16
169 查看
1、为什么要使用BouncyCastle?
我们平常都使用jdk自带的加密包对数据进行加密,加密方式也都是使用的默认的,如果我们想选择别的加密方式,发现会报错,比如如下代码: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"));这时候我们就需要借助BouncyCastle了。
2、如何使用BouncyCastle?
2.1、方式一
(1)去BouncyCastle官网下载provider的包,然后放入$JAVA_HOME\jre\lib\ext目录下;(2)修改配置文件$JAVA_HOME\jre\lib\security\java.security,加入一行配置:security.provider.按顺序填数字=org.bouncycastle.jce.provider.BouncyCastleProvider
(3)代码如下:
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"));
2.2、方式二
(1)在代码中通过maven引入BouncyCastle的包<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.56</version>
</dependency>
(2)无需像方式一一样修改配置文件,直接在代码中手动添加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"));
3、注意点
出于某些原因,可能需要去官网下载JCE包,替换掉$JAVA_HOME\jre\lib\security目录下的内容,其次密钥的长度也要注意。相关文章推荐
- 使用BouncyCastle求ECC上的K倍点
- 使用BouncyCastle求ECC上的K倍点
- 在.NET Core 里使用 BouncyCastle 的DES加密算法
- 在.NET Core 里使用 BouncyCastle 的DES加密算法
- C# 与JAVA 的RSA 加密解密交互,互通,C#使用BouncyCastle来实现私钥加密,公钥解密的方法
- 一个使用bouncycastle进行安全操作的实用类
- BouncyCastle 中使用SM3做hash
- BouncyCastle使用教程
- BouncyCastle 中使用SM3做hash
- STL容器使用DEMO-map
- CStatic控件的基本使用
- JavaScript使用技巧精萃
- 在asp.net中使用Eval()绑定值传参方式跳转
- Linux 使用开源 yum 报错 Error performing checksum 解决方法
- Ubuntu下安装使用JLink以及解决自动更新固件
- Flex之旅:第二部分:容器与布局(4)--- callLater()方法的使用
- 使用PHPnow在本地搭建服务器并建站
- Log4Net使用方法
- 任务栏控件Xtreme TaskPanel 下载及使用说明