




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第SpringBoot整合jasypt实现敏感信息的加密详解目录一、简介二、导入依赖三、加密字段工具类四、application.yaml配置五、启动类测试
一、简介
在后端开发中有很多敏感信息,比如数据库用户名密码,第三方Apikey,云服务商的secretKey等、如果不希望用明文在application.yml配置的,可以使用jasypt加密这些字段。
还有很重要的一点,如果你自己开源一些东西,将代码上传一些代码托管平台,肯定需要隐藏敏感信息,用jasypt加密可以简化每次上传下拉代码修改敏感信息。
官方文档,官方文档使用方法描述得很清楚适用于各种情况,下面我简单记录一下加密MySQL用户名密码方法
二、导入依赖
dependencies
!--jasypt敏感数据加密,如:数据库密码,阿里云短信服务等--
dependency
groupIdcom.github.ulisesbocchio/groupId
artifactIdjasypt-spring-boot-starter/artifactId
version3.0.4/version
/dependency
!--mysql--
dependency
groupIdmysql/groupId
artifactIdmysql-connector-java/artifactId
version8.0.30/version
scoperuntime/scope
/dependency
!--mybatis-plus--
dependency
groupIdcom.baomidou/groupId
artifactIdmybatis-plus-boot-starter/artifactId
version3.5.2/version
/dependency
!--springboot启动包--
dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter/artifactId
/dependency
/dependencies
三、加密字段工具类
加密mysql用户名密码,将用户名密码传入fields数组,保存打印结果下面配置在application.yaml文件
publicclassJasyptUtil{
privatestaticPooledPBEStringEncryptorencryptor;
static{
encryptor=newPooledPBEStringEncryptor();
SimpleStringPBEConfigconfig=newSimpleStringPBEConfig();
config.setPassword("Thisisasecretkey");//秘钥
config.setAlgorithm("PBEWithMD5AndDES");
//config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
config.setKeyObtentionIterations("1000");
config.setPoolSize("1");
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
publicstaticvoidmain(String[]args){
//需要加密的字段
String[]fields={"root","123456"};
for(Stringfield:fields){
System.out.println(field+"----"+encryptorField(field));
publicstaticStringencryptorField(Stringfield){
returnencryptor.encrypt(field);
publicstaticStringdecryptField(Stringfield){
returnencryptor.decrypt(field);
}
可以看到加密过后的字符串如下
四、application.yaml配置
数据源用户名密码使用上面生成加密字段
spring:
datasource:
username:ENC(J5GOvO1FBgtiwEytIjU/4WdzHUgbJq/W)
password:ENC(SqCHgntWcYnthvtWGA3+GAycDle/qCBx)
driver-class-name:com.mysql.cj.jdbc.Driver
url:jdbc:mysql://localhost:3306/oauthserverTimezone=UTCuseUnicode=truecharacterEncoding=utf8
#jasypt敏感数据加密配置
#详细用法可参考/ulisesbocchio/jasypt-spring-boot
jasypt:
encryptor:
password:123456#秘钥,除了该项,下面都是默认值,该项建议设置JVM启动参数,如:-Djasypt.encryptor.password=123456
algorithm:PBEWithMD5AndDES#加密算法
key-obtention-iterations:1000#迭代次数,值越大越复杂,相对越安全
pool-size:1
provider-name:SunJCE
salt-generator-classname:org.jasypt.salt.RandomSaltGenerator
iv-generator-classname:org.jasypt.iv.RandomIvGenerator
string-output-type:base64
proxy-property-sources:false
property:
prefix:ENC(#默认前缀
suffix:)#默认后缀
五、启动类测试
查询MySQL的user表打印用户名和密码
packagecom.ye;
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
importorg.springframework.context.ConfigurableApplicationContext;
importjavax.sql.DataSource;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
@SpringBootApplication
publicclassTest2Application{
publicstaticvoidmain(String[]args)throwsSQLException{
ConfigurableApplicationContextcontext=SpringApplication.run(Test2Application.class,args);
DataSourcedataSource=(DataSource)context.getBean("dataSource");
Connectionconnection=dataSource.getConnection();
try{
PreparedStatementps=connection.prepareStatement("select*fromuser;");
ResultSetrs=ps.executeQuery();
System.out.println("----------user表数据-----------
while(rs.next()){
StringuserName=rs.getString("user_name");
Stringpassword=rs.getString("password");
System.out.printf("userName:%s,password:%s%n",userName,password);
}catch(SQLException
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安装防盗门合同协议书
- 男友同意协议书
- 确权界线协议书
- 联防共建协议书
- 旅行社聘用员工协议书
- 赔偿划分协议书
- 安徽师范生就业协议书
- 脱贫开发协议书
- 股权出资协议书
- 确权修正协议书
- 2025眼镜行业市场分析报告
- 2022-2023学年广东省广州市天河区七年级(下)期末数学试卷(含答案)
- 2025-2031年中国鸡爪市场竞争态势及投资战略规划研究报告
- 湖北省武汉市常青联合体2024-2025学年高一下学期期中考试历史试题(原卷版+解析版)
- 银屑病诊断与治疗
- 2025-2030硅胶行业市场发展分析及趋势前景与投资战略研究报告
- 压力管道质量保证手册
- 银行大堂经理岗位培训
- (四调)武汉市2025届高中毕业生四月调研考试 数学试卷(含答案详解)
- 重庆二手房买卖合同范本
- GB/T 24630.2-2024产品几何技术规范(GPS)平面度第2部分:规范操作集
评论
0/150
提交评论