前面叙述了数据传递过程中的加密,需要使用到aop对result和request进行加密和解密。
现在需要对服务器的中间件进行保护设置,在配置文件中尽量不要暴露出来服务器件的密码账号。
需要对配置文件进行加密处理。
一、jasypt
jasypt是专门加密各种配置文件的依赖包
<dependency> <groupid>com.github.ulisesbocchio</groupid> <artifactid>jasypt-spring-boot-starter</artifactid> <version>3.0.3</version> </dependency>
jasypt有多种版本,并且包之间的依赖问题比较多
二、使用步骤
1.引入依赖
添加配置
如下(yml配置):
jasypt:
encryptor:
algorithm: pbewithmd5anddes #算法-固定写法一般没人改
password: 1234qwer
iv-generator-classname: org.jasypt.iv.noivgenerator #设置初始向量iv生成器的类名
2.生成密钥
使用代码生成密钥
public class jasyptutil {
/**
* 加密方法
* @param salt 盐值
* @param targetstring 待加密字符串
* @return 密文
*/
public static string encrypt(string salt, string targetstring) {
basictextencryptor encryptor = new basictextencryptor();
encryptor.setpassword(salt);
return encryptor.encrypt(targetstring);
}
/**
* 解密方法
* @param salt 盐值
* @param targetstring 待解密字符串
* @return 明文
*/
public static string decrypt(string salt,string targetstring) {
basictextencryptor encryptor = new basictextencryptor();
encryptor.setpassword(salt);
return encryptor.decrypt(targetstring);
}
public static void main(string[] args) {
string salt = "1234qwer";
string password = "xxxxx";
// 进行加密操作
string encryptstring1 = encrypt(salt, password);
// 进行解密操作
string decryptstring1 = decrypt(salt, encryptstring1);
// 输出明文和密文
system.out.println("encryptstring1="+encryptstring1);
system.out.println("decryptstring1="+decryptstring1);
}
}
使用jar包生成密钥
java -cp d:\repository\org\jasypt\jasypt\1.9.3\jasypt-1.9.3.jar org.jasypt.intf.cli.jasyptpbestringencryptioncli input="xxxxx" password=1234qwer algorithm=pbewithmd5anddes
在yml配置文件中修改密钥:
password: enc(kmmwxkytccovu+mmoxxojp7tif1ja9fn)
enc是jaspty中默认的,可以设置配置项自定义设置
3.idea启动添加环境变量
在idea中设置启动项configuration,添加环境变量

4.linux环境启动
nohup java -djasypt.encrypt.password=1234qwer -jar xxxxx.jar > nohup.log &
报错
版本问题,解决冲突
如果错误信息是缺少jce安全插件,那么需要下载jce_policy-8的zip包去放入到jdk下的jre/lib/security下
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论