Java使用BouncyCastle加密

 更新时间:2023年06月16日 09:32:15   作者:末日流云18  
本文主要介绍了Java使用BouncyCastle加密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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目录下的内容,其次密钥的长度也要注意。

到此这篇关于Java使用BouncyCastle加密的文章就介绍到这了,更多相关Java BouncyCastle加密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • spring boot配置拦截器代码实例

    spring boot配置拦截器代码实例

    这篇文章主要介绍了spring boot配置拦截器代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • java方法重写和super关键字实例详解

    java方法重写和super关键字实例详解

    这篇文章主要介绍了java方法重写和super关键字实例详解的相关资料,需要的朋友可以参考下
    2017-03-03
  • Java swing 图像处理多种效果实现教程

    Java swing 图像处理多种效果实现教程

    这篇文章主要介绍了Java swing 图像处理多种效果实现教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • 分享一个你不知道的Java异常实现的缺陷

    分享一个你不知道的Java异常实现的缺陷

    Java中一个大家熟知的知识点就是异常捕获,try...catch...finally组合,但是很多人不知道这里面有一个关于Java的缺陷,或者说是异常实现的一点不足之处。本文就通过一个很简单的实验给大家演示下效果玩玩儿,希望大家能觉得有趣
    2022-12-12
  • Zookeeper Curator使用介绍

    Zookeeper Curator使用介绍

    curator是Netflix公司开源的⼀套Zookeeper客户端框架,和ZKClient⼀样,Curator解决了很多Zookeeper客户端非常底层的细节开发⼯作,包括连接重连,反复注册Watcher和NodeExistsException异常等,是最流行的Zookeeper客户端之⼀
    2022-09-09
  • Nacos通过RefreshScope实现配置自动更新的方式分享

    Nacos通过RefreshScope实现配置自动更新的方式分享

    这篇文章主要给大家介绍了Nacos如何通过RefreshScope实现配置自动更新,文中给了两种实现方式供大家参考,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-09-09
  • Java之Zookeeper注册中心原理剖析

    Java之Zookeeper注册中心原理剖析

    这篇文章主要介绍了Java之Zookeeper注册中心原理剖析,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • SpringBoot整合Spring Security过滤器链加载执行流程源码分析(最新推荐)

    SpringBoot整合Spring Security过滤器链加载执行流程源码分析(最新推荐)

    Spring Boot 对于 Spring Security 提供了自动化配置方案,可以使用更少的配置来使用 Spring Security,这篇文章主要介绍了SpringBoot整合Spring Security过滤器链加载执行流程源码分析,需要的朋友可以参考下
    2023-02-02
  • 详解Spring @Lazy注解为什么能破解死循环

    详解Spring @Lazy注解为什么能破解死循环

    这篇文章主要来和大家探讨一下Spring中的@Lazy注解为什么能破解死循环,文中的示例代码讲解详细,具有一定的参考价值,需要的可以了解一下
    2023-07-07
  • Spring中的事务管理实例详解

    Spring中的事务管理实例详解

    这篇文章主要介绍了Spring中的事务管理,以实例形式详细分析了事务的概念与特性以及事物管理的具体用法,需要的朋友可以参考下
    2014-11-11

最新评论