AES(高级加密标准)是美国联邦政府采用的一种区块加密标准,其替代原先的DES加密算法,成为对称密钥加密中最流行的算法之一。
不知道在上一篇文章中你有没有发现,jdbc.properties
中的数据库密码配置是这样写的:
1 | jdbc.password=5EF28C5A9A0CE86C2D231A526ED5B388 |
其实这不是真正的密码,而是经过AES加密的。
AES的Java实现
AES加密解密的实现就不具体介绍了,这里直接给出源码:
1 | package com.demo.project.monitor.util; |
解密配置文件
既然配置文件部分内容已经进行了加密处理,那我们在填充上下文的占位符时就要对其进行解密,获得真正的密码,还记得之前我们在加载配置文件的时候使用的类PropertyPlaceholderConfigurer
吗?我们可以通过对它的resolvePlaceholder
方法进行重写来实现。
实现过程
首先创建一个继承自PropertyPlaceholderConfigurer
的类EncryptPropertyPlaceholderConfigurer
,然后重写它的方法:
1 | package com.demo.project.monitor.util; |
接着在spring上下文中将原来的beanorg.springframework.beans.factory.config.PropertyPlaceholderConfigurer
修改为我们创建的类即可:
1 | <bean class="com.demo.project.monitor.util.EncryptPropertyPlaceholderConfigurer"> |
这样spring在填充占位符的时候就会进行判断,对加密后的敏感信息进行解密处理,得到真实的内容。
文章项目源码已发布到Github:https://github.com/ZKHDEV/MultDependPjo
本文为作者kMacro原创,转载请注明来源:https://zkhdev.github.io/2017/12/22/java-dev4/
v1.5.2