Encrypt 加密/解密
最近,在修改 xxl-job 配置文件时,需要加入 MySQL 数据库的账密,以及报警邮箱的账密,而不想让别人一眼就看到这些私密信息,有必要进行加密和解密操作,而实际的项目中也是这样做的!这里,介绍一个常用的加解密库 jasypt 的使用。
1、通过 pom 文件引入 jar 包
在 https://mvnrepository.com/ 搜索并复制以下坐标信息,通过 pom 文件下载到本地 maven 仓库:
<!-- https://mvnrepository.com/artifact/com.github.ulisesbocchio/jasypt-spring-boot-starter -->
<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2.1.0</version>
</dependency><!-- https://mvnrepository.com/artifact/org.jasypt/jasypt -->
<dependency><groupId>org.jasypt</groupId><artifactId>jasypt</artifactId><version>1.9.2</version>
</dependency>
2、使用本地 jasypt 库进行加解密测试
通过 CMD 测试一下该加解密库的用法~,注意实际使用时下面的pw要改为password,因为文章检测不允许出现这类敏感字符,所以使用了pw替代password说明。
加密操作如下:
algorithm 指的是采用的加解密算法,input 设置需要加密的真实密码,pw 是参考密钥(可自定义),而 output 则是加密后的密码了。
注意:每次执行该命令,获取的输出值都是不一样的,不妨可以试一试,但不影响后面的解密。
解密操作如下:
D:\XXX\maven\repository\org\jasypt\jasypt\1.9.2>java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="7Cm9pYnxTAsKlFMZORZNHyI9VM2b7Jk4" pw="weixiangxiang" algorithm=PBEWithMD5AndDES----ENVIRONMENT-----------------
Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.261-b12----ARGUMENTS-------------------
algorithm: PBEWithMD5AndDES
input: 7Cm9pYnxTAsKlFMZORZNHyI9VM2b7Jk4
password: weixiangxiang----OUTPUT----------------------
2022081800
注意:虽然每次加密后的字符串都不一样,但解密时获取到的真实密码都是一致的!!
3、Java demo 测试
除了通过 java -cp 命令加解密,也可以写 Java 测试类输出加解密结果,如下:
import org.jasypt.util.text.BasicTextEncryptor;
import org.junit.jupiter.api.Test;public class EncryptTest {@Testvoid test001() {// 默认 PBEWithMD5AndDES 算法BasicTextEncryptor basicTextEncryptor = new BasicTextEncryptor();// 设置salt值,可随意定义basicTextEncryptor.setPassword("weixiangxiang");// 加密
// System.out.println(basicTextEncryptor.encrypt("2022081800"));// 每次加密结果都是不一样的,但通过密钥解密出的结果是一样的// 7Cm9pYnxTAsKlFMZORZNHyI9VM2b7Jk4// Hju0OL0UJZrIzVMnJzu5xX6xXcGEgGcT// a8VcXchj9XHbR13XVmdr1XVA3fBGmqSZ// 解密:输出结果都是2022081800System.out.println(basicTextEncryptor.decrypt("7Cm9pYnxTAsKlFMZORZNHyI9VM2b7Jk4"));System.out.println(basicTextEncryptor.decrypt("Hju0OL0UJZrIzVMnJzu5xX6xXcGEgGcT"));System.out.println(basicTextEncryptor.decrypt("a8VcXchj9XHbR13XVmdr1XVA3fBGmqSZ"));}
}
4、实际项目的加解密操作
在需要加解密的地方,注释说明如何加解密操作:(注意,为了安全只能测试环境标记)
#### encryptor ###
#jasypt:
# encryptor:
# algorithm: PBEWithMD5AndDES
# password: EbfYkitulv73I2p0mXI50JMXoaxZTKJ7 #参考密钥,具体的密钥还要看启动时加入的密钥# java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="" pw="" algorithm=
# java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="" pw="" algorithm=
最后,xxl-job 配置文件的 application.properties 可改成这样:
# 调度中心JDBC链接:就是上面创建的数据库连接
spring.datasource.url=jdbc:mysql://ENC(mbA7Vhof3rU1azG98nVgFiGmYRPk7md6):3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=ENC(YGx/CR56wvzPrDslLXwbng==)
spring.datasource.password=ENC(93CMx3ypsqnRdLRKgKMHxg==)
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
### 报警邮箱
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=ENC(Op3pkJ3z6AnTiXuGvNH9cLf4sR+xIiIZc1BeyAuMGeI=)
spring.mail.password=ENC(zXLgsRE3TnGZS25dB3aRop3aUjNfFZu1dkudRtCjK0k=)
最后,启动项目时加入密钥,可以每次重启时动态调整密钥,比如:
java -jar -Djasypt.encryptor.password=123456789 xxx.jar
因此,在实际项目中,就可以实现对比如用户名、密码等敏感信息的加密了。
Encrypt 加密/解密相关推荐
- encrypt 加密解密
encrypt加密与解密 <?php class Security {public static function encrypt($input, $key) {$size = mcrypt_g ...
- android rsa加密工具类,GitHub - Lerist/encrypt: Android 加密解密工具包。
Encrypt(加密工具) 字符串,byte[],文件等对象的加密和解密工具集合,包含了多种加密方案. 加密类型 摘要 相关方法 简单加密 换一种编码格式 Base64Util 单向加密 只能加密,不 ...
- oracle加密 解密,oracle加密encrypt,解密decrypt
本文将为您描述oracle加密encrypt,解密decrypt,教程操作步骤:oracle加密encrypt,解密decrypt 目录 oracle加密encrypt,解密decrypt 加密 解密 ...
- encrypt decrypt 加密解密完整实例(密文可用密钥解密)
<?php error_reporting(0); header("content-Type: text/html; charset=utf-8");//输出编码/**功能: ...
- php encrypt加密和解密,php中关于openssl_encrypt的加密和解密
1.DES介绍 DES 是对称性加密里面常见一种,是一种使用密钥加密的块算法.密钥长度是64位(bit),超过位数密钥会被忽略. a.跨语言做 DES 加密解密经常会出现问题,往往是填充方式不对.编码 ...
- iOS使用Security.framework进行RSA 加密解密签名和验证签名
iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...
- java之php、Android、JAVA、C# 3DES加密解密
异常如下 1.javax.crypto.BadPaddingException: Given final block not properly padded 1)要确认下是否加密和解密都是使用相同的填 ...
- 如何优雅的实现 Spring Boot 接口参数加密解密?
点击关注公众号,Java干货及时送达 加密解密本身并不是难事,问题是在何时去处理?定义一个过滤器,将请求和响应分别拦截下来进行处理也是一个办法,这种方式虽然粗暴,但是灵活,因为可以拿到一手的请求参数和 ...
- python实现加密字符串_Python实现对字符串的加密解密方法示例
本文实例讲述了Python实现对字符串的加密解密方法.分享给大家供大家参考,具体如下: 需求是是要将密码存在数据库里,所以要加密解密是可逆的,在数据库里不要有特殊字符,防止数据库备份和恢复中出错. 安 ...
最新文章
- qemu模拟A9/A15运行Linux4.2.3
- asp.net提交危险字符处理方法之一
- FFmpeg被声明为已否决的解决方案
- 上下文 及 执行上下文
- 【推荐活动】2015产品经理读书计划
- shell和linux的认识
- Android 闹钟,实现demo
- Python版基于递归的冒泡排序算法
- This application is only supported on Windows 8.1, Windows Server 2012 R2, or hi gher.
- 获取本机IP可区分系统可区分虚拟机和本机java程序跨平台
- php获取多选框的值
- CS5463代码模块解析(包含下载链接)
- php微信公众号绑定微信号,订阅号实现微信网页授权登陆(原创)
- 数学 - 基本初等函数导数公式及求导法则
- 每天被信息轰炸的你,如何辨别新闻真假?
- Android-第十三节04Room框架详解
- SPIKE创新科技套装做探路机器人(上)
- ios键盘弹起页面被顶上去的问题
- 数学建模:火箭发生升空模型——基于matlab语言
- 批量出售QQ群idcnd传媒提供