目录
@(终于等到你)
写在前面
俗话说:”顾客是上帝“,身为程序员的我有时会直接对接客户方提出的需求,毕竟我处在提供服务的一方,所以我也会尽量的满足临时的要求。前些天就有了一个满足漏洞检测的需求,想要把数据库的明文敏感信息加密,其实也就是密码加密,所以也就有了这篇文章,我的项目是springboot结构,修改其实也挺简单,废话少说,上代码。
这里使用的是 jasypt,而它是一个java实现的安全框架
1.Maven的pom.xml依赖
com.github.ulisesbocchio jasypt-spring-boot-starter 1.8
2.通过测试类验证加密加密
测试类如下
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;import org.jasypt.encryption.pbe.config.EnvironmentPBEConfig;/** * Created By charmsongo 21:04 2018/11/30 */public class CryptorTest { /** * 加密方法 * @param plainText 需加密文本 */ public static void testEncrypt(String plainText) { StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor(); EnvironmentPBEConfig config = new EnvironmentPBEConfig(); // 加密的算法,这个算法是默认的 config.setAlgorithm("PBEWithMD5AndDES"); //加密的密钥,自定义 config.setPassword("CSEbfYkitulv73I2p0mXI50JMXoaxZTKJ7"); standardPBEStringEncryptor.setConfig(config); String encryptedText = standardPBEStringEncryptor.encrypt(plainText); System.out.println(encryptedText); } /** * 解密方法 * @param encryptedText 需解密文本 */ public static void testDecrypt(String encryptedText) { StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor(); EnvironmentPBEConfig config = new EnvironmentPBEConfig(); // 解密的算法,需同加密算法相同 config.setAlgorithm("PBEWithMD5AndDES"); //解密的密钥,需同加密密钥相同 config.setPassword("CSEbfYkitulv73I2p0mXI50JMXoaxZTKJ7"); standardPBEStringEncryptor.setConfig(config); String plainText = standardPBEStringEncryptor.decrypt(encryptedText); System.out.println(plainText); } public static void main(String[] args){ testEncrypt("root"); testDecrypt("TU1NovjRHGyjp7cSc6v0sQ=="); }}
运行main方法结果如下
TU1NovjRHGyjp7cSc6v0sQ==root
3.application.properties中配置修改
##mysql-----修改前配置spring.datasource.url=jdbc:mysql://192.168.2.105/mysql?characterEncoding=utf8&useSSL=truespring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.jdbc.Driver##mysql-----修后前配置jasypt.encryptor.password=CSEbfYkitulv73I2p0mXI50JMXoaxZTKJ7#引入密钥spring.datasource.url=jdbc:mysql://192.168.2.105/mysql?characterEncoding=utf8&useSSL=truespring.datasource.username=rootspring.datasource.password=ENC(TU1NovjRHGyjp7cSc6v0sQ==)spring.datasource.driver-class-name=com.mysql.jdbc.Driver
使用 jasypt 加密数据库敏感信息的任务现在就可以交工了,但是看完您会发现,这样也不是特别安全的,确实。。。所以您有什么更好的加密方法欢迎留言