SpringBoot整合jasypt实现敏感信息的加密详解_第1页
SpringBoot整合jasypt实现敏感信息的加密详解_第2页
SpringBoot整合jasypt实现敏感信息的加密详解_第3页
SpringBoot整合jasypt实现敏感信息的加密详解_第4页
SpringBoot整合jasypt实现敏感信息的加密详解_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论