Jasypt加密之行
一、概述
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加密之行相关推荐
- 使用Jasypt加密spring boot应用配置文件的敏感信息
Jasypt是一个Java库,允许开发人员以很简单的方式添加基本加密功能,而无需深入研究加密原理.利用它可以实现高安全性的,基于标准的加密技术,无论是单向和双向加密.加密密码,文本,数字,二进制文件. ...
- 【编程不良人】快速入门SpringBoot学习笔记06---RestFul、异常处理、CORS跨域、Jasypt加密
1. RestFul 配套视频:[编程不良人]2021年SpringBoot最新最全教程_哔哩哔哩_bilibili 1.1 引言 REST全称是(Resources) Representationa ...
- Springboot项目使用jasypt加密配置文件中的敏感信息
目录 目录 项目背景 需求 jasypt简介 使用 0,版本对应关系 1,引入依赖 2,启用加密 2.1,在启动类上配置注解 2.2,启用注解扫描和@Configuration配置 2.3,只针对指定 ...
- spring boot使用jasypt加密原理解析
目录 版本对应的坑 关键技术点 源码解析 将jar包引入到spring boot中 @EnableAutoConfiguration原理 JasyptSpringBootAutoConfigurati ...
- jasypt加密解密
jasypt加密解密 1. 导入依赖 <!--jasypt--> <dependency><groupId>com.github.ulisesbocchio< ...
- jasypt 加密解密+自定义加密算法
1.引用jar包 gradle: implementation group: 'com.github.ulisesbocchio', name: 'jasypt-spring-boot-starter ...
- MD5、AES、Jasypt加密方式的简要介绍与对比
MD5.AES.Jasypt加密方式的简要介绍与对比 1 前言 目前做的项目中用的加密工具有:MD5.AES加密工具(旧的)及Jasypt加密工具(新增),对这三种加密工具的简要原理和应用做了整理.内 ...
- Jasypt 加密-引言
Jasypt 也即Java Simplified Encryption是Sourceforge.net上的一个开源项目.在当地时间11月23号的通告中,Jasypt 1.4的新特征包括:加密属性文件( ...
- 【springboot】jasypt加密
参考: https://blog.csdn.net/enthan809882/article/details/105529349 https://amore.blog.csdn.net/article ...
最新文章
- smartClient 2--可视化组件
- warning delete ·· (prettier/prettier)
- 2012暑假最后两次组队赛总结
- 大数据技术之kafka (第 3 章 Kafka 架构深入 ) 高效读写数据
- AWS EC2怎么动态增加磁盘空间
- Dubbo服务暴露的流程
- php memcached存储对象,用于会话存储的Memcached或MySQL – PHP
- 平面设计中的网格系统pdf_哪些设计师必看平面设计书籍,写给设计师
- NOI题库1.11编程基础之二分查找 矩形分割
- 音乐标签修改 android,音乐标签Android版
- 怎么做有效沟通技巧员工培训PPT课件?
- Python 唤起QQ对话框 QQ客服效果
- Intellij中格式化mapper.xml整齐
- Git 报错:You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).Please, commit your changes
- LPC1768 IAR环境下使用完整64K内存的方法_整理
- Object对象Configurable,Enumerable,Writable含义解读
- 宇视科技的摄像头添加至别的品牌录像机黑屏
- android高德地图计算行驶里程,高德地图批量统计驾车轨迹的用时及总里程
- 转载_利用虚拟机VMWARE安装并配置Debian Linux系统的总结
- 中国车用轴承行业市场发展分析与投资战略研究报告2022-2028年