91名师指路-头部
91名师指路

spring boot 集成jasypt3.0.3

由于某些原因,现在不支持支付宝支付,如需要购买源码请加博主微信进行购买,微信号:13248254750

一:引入pom

<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>


二:添加application.yml配置文件

jasypt:
encryptor:
password: mszl #盐值
algorithm: PBEWithMD5AndDES #加密方式(固定写死)
iv-generator-classname: org.jasypt.iv.NoIvGenerator # 固定写死


三:jasypt工具类

package com.mszl.utils;

import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;

public class JasyptUtils {

/**
* 加密
* @param password 配置文件中设定的加密盐值
* @param value 要加密的字符串
*/
public static String encyptPwd(String password, String value){
PooledPBEStringEncryptor encryptor=new PooledPBEStringEncryptor();
encryptor.setConfig(cryptor(password));
String result=encryptor.encrypt(value);
return result;
}

/**
* 解密
* @param password 配置文件中设定的加密盐值
* @param value 解密字符串
*/
public static String decyptPwd(String password, String value){
PooledPBEStringEncryptor encryptor=new PooledPBEStringEncryptor();
encryptor.setConfig(cryptor(password));
String result=encryptor.decrypt(value);
return result;
}

public static SimpleStringPBEConfig cryptor(String password){
SimpleStringPBEConfig config=new SimpleStringPBEConfig();
config.setPassword(password);
config.setAlgorithm("PBEWithMD5AndDES");
config.setKeyObtentionIterations("1000");
config.setPoolSize("1");
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setStringOutputType("base64");
return config;
}

public static void main(String[] args) {
// 加密
String encPwd=encyptPwd("mszl", "root");
System.out.println(encPwd);

// 解密
String decPwd=decyptPwd("mszl", encPwd);
System.out.println(decPwd);
}

}


问题:

1)我们为什么要集成jasypt?

回答:是为了让数据库更加的安全,不能让所有人都知道数据库的账号和密码。


2)我们项目上线后假设把jasypt的盐值放在配置文件中是否安全?

回答:非常不安全。如果把jasypt的盐值放在配置文件中等于没有加密,因为别人知道了盐值后就可以解密了。


3)既然把盐值放到配置文件中不安全,那么我们应该放哪里呢?

回答:我们可以将盐值放到启动命令中。如下所示。

java -jar -Djasypt.encryptor.password=mszl mszl.jar


4)我们上线后的配置应该怎么写,把password 这项配置去掉(但是你本地项目中还是需要引入的,否则项目启动会报错),如下图所示

jasypt:
encryptor:
algorithm: PBEWithMD5AndDES
iv-generator-classname: org.jasypt.iv.NoIvGenerator

数据库加密后的配置如下所示:

spring:
application:
name: mszl-read
datasource:
master:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
jdbc-url: ENC(WiZsfrGfhhGPKASuZ1/7nsj9ynoNsxjepkoZQgeRWOKCfE4E31koPWSSHbn3UxkF9z1NZu+sJPoSNKAd1srhvZc6XfK7rHuH1QT1BoMSubUKaSDHgTKF7VjEgvUHgiPmIGAtgv6DTGG4qXpJvHiotLZQqw7rOMGI7tb8BAHOE+w=)
username: ENC(/57eSwxOkiTXBBGtm0kLTw==)
password: ENC(pM+rHIGOTRVVBA/WZ3fG9Q==)

注意:加密的内容都需要用ENC括起来




2021-11-11 09:02:27     阅读(2060)

名师出品,必属精品    https://www.91mszl.com

联系博主    
用户登录遮罩层
x

账号登录

91名师指路-底部