首页 > 其他分享 >Jasypt库简介

Jasypt库简介

时间:2024-09-08 23:23:58浏览次数:5  
标签:False 配置文件 Jasypt 简介 encryptor 加密 加密算法

1.1 Jasypt库简介



Jasypt是一个易于使用的Java库,专门用于加密和解密配置文件中的敏感信息,如数据库凭据、API密钥等。它提供了一种安全的方式来存储和管理配置文件中的敏感数据,而不是以明文形式暴露。


Jasypt支持多种加密算法,如DES、AES、Blowfish等,以及基于口令的加密算法(PBE)。它还提供了灵活的配置选项,允许开发人员自定义加密算法、密码、初始化向量等。


官网:jasypt-spring-boot


1.2 Jasypt库的主要特点

Jasypt的主要特点包括:


简单易用:Jasypt提供了简单的API和注解,使得在应用程序中集成和使用Jasypt变得非常容易。

安全性高:Jasypt使用强加密算法来保护配置文件中的敏感信息,防止数据泄露和未授权访问。

兼容性好:Jasypt可以与各种Java应用程序和框架集成,包括Spring、Spring Boot、Hibernate等。

二、开发环境

JDK版本:JDK 17

Spring Boot版本:Spring Boot 3.2.2

MySQL版本:8.0.37

构建工具:Maven

三、Jasypt集成到SpringBoot3

3.1 引入依赖

<dependency>

   <groupId>com.github.ulisesbocchio</groupId>

   <artifactId>jasypt-spring-boot-starter</artifactId>

   <version>3.0.5</version>

</dependency>


3.2 配置Jasypt

jasypt:

 encryptor:

   algorithm: PBEWITHHMACSHA512ANDAES_256

   iv-generator-classname: org.jasypt.iv.RandomIvGenerator

   password: secret_key # 这里的秘钥一般不会写在配置文件中,为了方便理解暂时放在这里

   property:

     prefix: ENC(

     suffix: )


algorithm: jasypt的加密算法,这里指定加密算法为一种结合了SHA-512 HMAC和AES-256加密算法的强加密算法。

iv-generator-classname: 指定用于生成初始化向量的类。RandomIvGenerator是一个随机生成初始化向量的生成器,它适用于需要初始化向量的加密算法,如AES。每次加密时,它都会生成一个新的随机初始化向量,增加了解密的难度。

password: 指定用于加密和解密的密码。

property.prefix: 指定加密值的前缀。当Jasypt处理配置文件时,它会查找以这个前缀开始的属性值,并尝试使用配置的加密算法进行解密。默认值是ENC(,也可以进行修改。

property.suffix: 指定加密值的后缀。与prefix类似,Jasypt会查找以这个后缀结束的属性值进行解密。默认值是)。

更多配置属性:


Key 描述 Required Default Value

jasypt.encryptor.password 用于加密和解密的密码。这个密码非常重要,因为它用于生成加密密钥和解密密文。 True -

jasypt.encryptor.algorithm 指定加密算法。默认值是PBEWITHHMACSHA512ANDAES_256,这是一种结合了SHA-512 HMAC和AES-256加密算法的强加密算法。 False PBEWITHHMACSHA512ANDAES_256

jasypt.encryptor.key-obtention-iterations 指定获取加密密钥的迭代次数。这个值越大,获取密钥的过程越慢,但越安全。 False 1000

jasypt.encryptor.pool-size 指定加密器池的大小。如果设置为大于1的值,Jasypt将使用一个线程池来并行处理加密和解密请求。 False 1

jasypt.encryptor.provider-name 指定加密提供者的名称。默认值是SunJCE,这是Java加密扩展(JCE)的Sun Microsystems实现。 False SunJCE

jasypt.encryptor.provider-class-name 指定加密提供者的类名。如果指定了这个属性,Jasypt将使用这个类作为加密提供者,而不是默认的SunJCE。 False null

jasypt.encryptor.salt-generator-classname 指定用于生成盐值的类。默认值是org.jasypt.salt.RandomSaltGenerator,它生成一个随机的盐值。 False org.jasypt.salt.RandomSaltGenerator

jasypt.encryptor.iv-generator-classname 指定用于生成初始化向量的类。默认值是org.jasypt.iv.RandomIvGenerator,它生成一个随机的初始化向量。 False org.jasypt.iv.RandomIvGenerator

jasypt.encryptor.string-output-type 指定加密后的字符串输出类型。默认值是base64,这意味着加密后的值将转换为Base64编码的字符串。 False base64

jasypt.encryptor.proxy-property-sources 指定是否代理属性源。如果设置为true,Jasypt将代理所有的属性源,以便在获取属性值时进行解密。 False false

jasypt.encryptor.skip-property-sources 指定要跳过的属性源列表。如果某些属性源不包含敏感信息,或者您不想对它们进行加密,可以将它们添加到这个列表中。 False empty list

3.3 加密配置文件信息

先看一下我们现有的配置文件信息,我们要加密的信息是数据库url、username和password这三个属性:


spring:

 application:

   name: server

 datasource:

   url: jdbc:mysql://localhost:3306/study_db?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai

   driver-class-name: com.mysql.cj.jdbc.Driver

   username: root

   password: 123456


3.3.1 方案一(不推荐)

a.编写测试类生成加密后的配置文件信息

   @Autowired

   private StringEncryptor encryptor;


   @Test

   public void encrypt() {

       String url = encryptor.encrypt("jdbc:mysql://localhost:3306/study_db?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai");

       String name = encryptor.encrypt("root");

       String password = encryptor.encrypt("123456");

       System.out.println("database url: " + url);

       System.out.println("database username: " + name);

       System.out.println("database password: " + password);

   }


b.运行



c.修改原本的配置文件信息

spring:

 application:

   name: server

 datasource:

   url: ENC(z3xy2E55GmC126NvY1Mb3uprgXGjyaOWS4J3y72r1FFeTSno3m5ljGV22TqyYr85bptOY7drFHzrxaUfqbmetNWCsFY7i4vu5ig7ow0gk6ObLK/dVI4MRePxM5CGVzQ3XUWSJrUbLU1o+13g2erP2yV4uqeH6oVZH/FrBDQ6YfeeHmpl73emqMoGFFBnWdMvF1tzJxYMLcwthGBoaRopyA==)

   driver-class-name: com.mysql.cj.jdbc.Driver

   username: ENC(9oaZel6CzsIM/ws23QcX2ijvZvn8A5HBYJM4PDUvwFSqmCO26MJKKshhPE5Hi+BU)

   password: ENC(b5FqkU7mOSb0esB1qLXveDBalnUz7OtBxp0By/Q1sd5yk0cgOuJqIV2zSmqHA5mz)


标签:False,配置文件,Jasypt,简介,encryptor,加密,加密算法
From: https://blog.51cto.com/u_16274468/11953423

相关文章

  • Docker 教程简介
    教程名:Docker与微服务实战B站地址:尚硅谷Docker实战教程(docker教程天花板)-哔哩哔哩讲师:周阳‍前提了解SpringBoot,SpringCloud了解一些中间件:Redis,Nginx,MySQL了解Linux的基本使用知道Git‍课程大纲基础篇(零基小白)Docker简介Docker安装Docker常用命令Do......
  • Kubernetes 简介及部署方法
    目录1Kubernetes简介及原理1.1 应用部署方式演变1.2容器编排应用1.3kubernetes简介1.4K8S的设计架构1.5K8S各组件之间的调用关系1.6K8S的常用名词感念1.7k8S的分层架构2K8S集群环境搭建2.1k8s中容器的管理方式2.2k8s中使用的几种管......
  • 字符串查找函数strchr 、 strrchr和strstr的简介
    目录一、函数简介1.1. strchr 函数1.2.strrchr函数1.3. strstr 函数二、函数原型2.1. strchr 函数参数返回值2.1. strchr 函数参数返回值2.2. strstr 函数参数返回值三、函数实现(伪代码)3.1.strchr实现3.2.strrchr实现3.3. strstr实现四、......
  • 一、信息学奥赛简介
    CSP-J/S(非专业级别认证)CSP-J对应NOIP中普及组,CSP-S对应NOIP中的提高组。NOIP:全国青少年信息学奥林匹克联赛NOI:全国青少年信息学奥林匹克竞赛APIO/IOI比IOI更高一级,APIO是亚洲和太平洋地区信息学奥林匹克竞赛,IOI是国际信息学奥林匹克竞赛 二、计算机硬件基础1、计算机的发......
  • PyTorch深度学习教程第二章-PyTorch 简介
    文章目录前言一、高层次理解PyTorch二、开始使用PyTorch清单2.1:使用pip安装PyTorch清单2.2:使用conda安装PyTorch清单2.3:一个简单的PyTorch测试程序输出2.1:测试程序的输出结果三、PyTorch的应用四、PyTorch的优点和限制五、PyTorch与TensorFlow的比......
  • react16之前的虚拟dom数据结构简单简介
    在react16之前的版本中,虚拟dom节点的数据结构看起来大致如下constVitrualDom={type:'div',props:{class:'title'},children:[{type:'span',children:'HelloConardLi'},{type:'ul',......
  • 如何在pbootcms网站中调用公司简介等频道内容
    在PbootCMS中,使用{pboot:content}标签可以方便地调用特定频道的内容。下面是一个完整的示例,展示了如何使用{pboot:content}标签来调用公司简介等频道内容,并进行适当的展示。示例代码html<!--调用ID为1的频道内容-->{pboot:contentid=1}<!--显示频道标题--><......
  • WebGL入门(031):EXT_frag_depth 简介、使用方法、示例代码
    还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。No.内容链接1Openlayers【入门教程】-......
  • 海外合规|新加坡网络安全认证计划简介(三)-Cyber Trust认证
      一、认证简介:     Cyber Trust标志是针对数字化业务运营更为广泛的组织的网络安全认证。该标志针对的是规模较大或数字化程度较高的组织,因为这些组织可能具有更高的风险水平,需要他们投资专业知识和资源来管理和保护其IT基础设施和系统。CyberTrust标志采用基......
  • 海外合规|新加坡网络安全认证计划简介(三)-Cyber Trust
    一、认证简介:     Cyber Trust标志是针对数字化业务运营更为广泛的组织的网络安全认证。该标志针对的是规模较大或数字化程度较高的组织,因为这些组织可能具有更高的风险水平,需要他们投资专业知识和资源来管理和保护其IT基础设施和系统。CyberTrust标志采用基......