一、概述

Jasypt 为开发人员提供一种简单的方式来为项目增加加密功能,该技术可用于加密任务与应用程序,例如加密密码、敏感信息和数据通信、创建完整检查数据的sums. 其他性能包括高安全性、基于标准的加密技术、可同时单向和双向加密的加密密码、文本、数字和二进制文件。Jasypt也可以与Acegi Security整合也即Spring Security。Jasypt亦拥有加密应用配置的集成功能,而且提供一个开放的API从而任何一个Java Cryptography Extension都可以使用Jasypt。

Jasypt还符合RSA标准的基于密码的加密,并提供了无配置加密工具以及新的、高可配置标准的加密工具。

二、说明

简单的说,就是在开发部署项目时,连接数据库的账号/密码赤果果的写在application.properties文件里面,人家一看就知道了,不安全,通过Jasypt加密后人家看到的是一串加密后的字符串,提高了一些敏感信息的的安全性。

三、用法

首先引入依赖:

<!--jasypt加密配置-->
<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2.1.0</version>
</dependency>

然后在:bootstrap.yml 或者.properties 文件中指明Jasypt加密数据的加密盐

(当然,jasypt加密方式,默认PBEWithMD5AndDES,可改PBEWithMD5AndTripleDES)

#设置jasypt加密配置
jasypt:encryptor:password: lj&92&jm

最后就是将你要加密的信息  在jasypt中通过你设置的加密盐加密后,配置到XXX.properties文件中:ENC(加密串)(上面指明了加密盐为:lj&92&jm)

例如:账号/密码:root/123456

cloud.cs1db.common.username=ENC(1NmCzZBAyJC9qgbE40v8ug==)
cloud.cs1db.common.password=ENC(Em39zu4mO5gW7fW4/NgsSg==)

四、如何加密

方法1:

在maven仓库中找到jasypt-1.9.2.jar包(我的地址是C:\Program Files\Java\maven\repository\org\jasypt\jasypt\1.9.2\jasypt-1.9.2.jar),这个包就是加密的包了

cmd 命令 cd到这个包的路径下,执行如下命令,它会返回你加密后的密码:

(因为我的加密盐为:lj&92&jm  有特殊字符"&",所以用""包起来了)

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password="lj&92&jm" algorithm=PBEWithMD5AndDES
  • input:是需要加密的明文
  • password:是加密盐
  • algorithm:是加密的方式(默认)

效果如下:

方法二:

直接写个工具类:

/*** Jasypt 加/解 密工具*/
public class JasyptTool {public static void main(String[] args) {//加密工具StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();//加密配置EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();config.setAlgorithm("PBEWithMD5AndDES");//加密方式,默认PBEWithMD5AndDES,可改PBEWithMD5AndTripleDESconfig.setPassword("lj&92&jm");//加密所需的salt(盐)//应用配置encryptor.setConfig(config);//加密encryption(encryptor, "root");//解密decrypt(encryptor, "Lx2KkAQulcP98WHYA4zslQ==");}/*** Jasypt加密 结果* @param encryptor 加密工具* @param plaintext 需要加密字符串*/public static void encryption(StandardPBEStringEncryptor encryptor, String plaintext){//加密String ciphertext=encryptor.encrypt(plaintext);System.out.println(plaintext + " : " + ciphertext);}/*** Jasypt解密 结果* @param encryptor 解密工具* @param ciphertext 需要解密字符串*/public static void decrypt(StandardPBEStringEncryptor encryptor, String ciphertext){//解密String plaintext=encryptor.decrypt(ciphertext);System.out.println(ciphertext + " : " + plaintext);}}

效果如下:

五、进一步保障加密安全

为了防止salt(盐)泄露,反解出密码.可以在项目部署的时候使用命令传入salt(盐)值。

实际项目开发时,配置如下:

#设置jasypt加密配置
jasypt:encryptor:password: ${jasypt_encryptor_password:lj&92&jm}

开发正常启动,部署时打包成jar,启动时加入盐,按如下命令启动,但缺点是会话一关闭,程序就停止运行了

jasypt_encryptor_password="lj&92&jm" java -jar xxxx.jar

优化:需要以守护进程启动,例如写成:以后端进程的方式启动,将日志输出到nohup.log中

nohup jasypt_encryptor_password="lj&92&jm" java -jar xxxx.jar > nohup.log 2>&1 &

这样一来,生产上的加密盐通过命令输入,不存在配置文件中,就可以避免被人获取了。

......

结束!!!听说还有将salt(盐)配置在系统环境变量中的,大体上应该是如下套路,有兴趣的小伙伴可以实验下

打开/etc/profile文件
vim /etc/profile文件末尾插入变量设置salt(盐)
export JASYPT_PASSWORD = XXX密码盐编译
source /etc/profile运行
java -jar -Djasypt_encryptor_password=${JASYPT_PASSWORD} xxx.jar

Jasypt加密之行相关推荐

  1. 使用Jasypt加密spring boot应用配置文件的敏感信息

    Jasypt是一个Java库,允许开发人员以很简单的方式添加基本加密功能,而无需深入研究加密原理.利用它可以实现高安全性的,基于标准的加密技术,无论是单向和双向加密.加密密码,文本,数字,二进制文件. ...

  2. 【编程不良人】快速入门SpringBoot学习笔记06---RestFul、异常处理、CORS跨域、Jasypt加密

    1. RestFul 配套视频:[编程不良人]2021年SpringBoot最新最全教程_哔哩哔哩_bilibili 1.1 引言 REST全称是(Resources) Representationa ...

  3. Springboot项目使用jasypt加密配置文件中的敏感信息

    目录 目录 项目背景 需求 jasypt简介 使用 0,版本对应关系 1,引入依赖 2,启用加密 2.1,在启动类上配置注解 2.2,启用注解扫描和@Configuration配置 2.3,只针对指定 ...

  4. spring boot使用jasypt加密原理解析

    目录 版本对应的坑 关键技术点 源码解析 将jar包引入到spring boot中 @EnableAutoConfiguration原理 JasyptSpringBootAutoConfigurati ...

  5. jasypt加密解密

    jasypt加密解密 1. 导入依赖 <!--jasypt--> <dependency><groupId>com.github.ulisesbocchio< ...

  6. jasypt 加密解密+自定义加密算法

    1.引用jar包 gradle: implementation group: 'com.github.ulisesbocchio', name: 'jasypt-spring-boot-starter ...

  7. MD5、AES、Jasypt加密方式的简要介绍与对比

    MD5.AES.Jasypt加密方式的简要介绍与对比 1 前言 目前做的项目中用的加密工具有:MD5.AES加密工具(旧的)及Jasypt加密工具(新增),对这三种加密工具的简要原理和应用做了整理.内 ...

  8. Jasypt 加密-引言

    Jasypt 也即Java Simplified Encryption是Sourceforge.net上的一个开源项目.在当地时间11月23号的通告中,Jasypt 1.4的新特征包括:加密属性文件( ...

  9. 【springboot】jasypt加密

    参考: https://blog.csdn.net/enthan809882/article/details/105529349 https://amore.blog.csdn.net/article ...

最新文章

  1. smartClient 2--可视化组件
  2. warning delete ·· (prettier/prettier)
  3. 2012暑假最后两次组队赛总结
  4. 大数据技术之kafka (第 3 章 Kafka 架构深入 ) 高效读写数据
  5. AWS EC2怎么动态增加磁盘空间
  6. Dubbo服务暴露的流程
  7. php memcached存储对象,用于会话存储的Memcached或MySQL – PHP
  8. 平面设计中的网格系统pdf_哪些设计师必看平面设计书籍,写给设计师
  9. NOI题库1.11编程基础之二分查找 矩形分割
  10. 音乐标签修改 android,音乐标签Android版
  11. 怎么做有效沟通技巧员工培训PPT课件?
  12. Python 唤起QQ对话框 QQ客服效果
  13. Intellij中格式化mapper.xml整齐
  14. Git 报错:You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).Please, commit your changes
  15. LPC1768 IAR环境下使用完整64K内存的方法_整理
  16. Object对象Configurable,Enumerable,Writable含义解读
  17. 宇视科技的摄像头添加至别的品牌录像机黑屏
  18. android高德地图计算行驶里程,高德地图批量统计驾车轨迹的用时及总里程
  19. 转载_利用虚拟机VMWARE安装并配置Debian Linux系统的总结
  20. 中国车用轴承行业市场发展分析与投资战略研究报告2022-2028年

热门文章

  1. 判断两个字符串是否互为变形词
  2. 蓝桥杯单片机学习过程记录(二十九)第八届国赛超声波测距机
  3. wgt文件怎么安装到手机_安卓wgt安装
  4. 【Metaverse系列一】元宇宙的奥秘
  5. npl自然语言理解测试
  6. linux负载均衡之关于负载均衡
  7. 【MySQL】的优化 pymysql操作 JDBC操作
  8. nginx 入门简介
  9. windows需要关闭的大量读写硬盘的服务
  10. java 初始化从句_java中if从句