spring web项目 数据库用户名密码加密解密
2019-04-23 14:03
225 查看
spring web项目 数据库用户名密码加密解密
这样对于是明文的帐号,密码,是没有问题的。但是如果我在配置文件中的帐号密码是加密后的,那么如何进行使用配置呢?
在使用springMVC开发web项目中,数据库的用户名,密码一般都是配置在.properties文件中
然后在通过.xml配置文件引入.properties的变量,例如
在config.properties文件中,配置如下变量,变量值配置在pom.xml的profile标签下,在此就不再赘述
[html] view plain copy- jdbc.driverClassName=com.mysql.jdbc.Driver
- jdbc.url=jdbc\:mysql\://${p.jdbc.url}/${p.jdbc.dbname}?useUnicode\=true&characterEncoding\=UTF-8&zeroDateTimeBehavior\=convertToNull&rewriteBatchedStatements\=true
- jdbc.username=${p.jdbc.username}
- jdbc.password=${p.jdbc.password}
- <context:property-placeholder location="classpath:/config.properties" />
这样对于是明文的帐号,密码,是没有问题的。但是如果我在配置文件中的帐号密码是加密后的,那么如何进行使用配置呢?
解决办法:
1.首先确定加密解密算法,这种情况下,我们肯定选择是对称性加密解密算法,首选DES算法,在这里就拿他举例
2.完成加密解密算法,这个代码很简单,就不赘述,密钥自己决定,保密即可
[java] view plain copy- public class DESUtils
- {
- private static Key key;
- private static String KEY_STR="mykey";
- static{
- try
- {
- KeyGenerator generator = KeyGenerator.getInstance("DES");
- SecureRandom secureRandom=SecureRandom.getInstance("SHA1PRNG");
- secureRandom.setSeed(KEY_STR.getBytes());
- generator.init(secureRandom);
- key = generator.generateKey();
- generator=null;
- }
- catch (Exception e)
- {
- throw new RuntimeException(e);
- }
- }
- /**
- * 对字符串进行加密,返回BASE64的加密字符串
- * <功能详细描述>
- * @param str
- * @return
- * @see [类、类#方法、类#成员]
- */
- public static String getEncryptString(String str){
- BASE64Encoder base64Encoder = new BASE64Encoder();
- System.out.println(key);
- try
- {
- byte[] strBytes = str.getBytes("UTF-8");
- Cipher cipher = Cipher.getInstance("DES");
- cipher.init(Cipher.ENCRYPT_MODE, key);
- byte[] encryptStrBytes = cipher.doFinal(strBytes);
- return base64Encoder.encode(encryptStrBytes);
- }
- catch (Exception e)
- {
- throw new RuntimeException(e);
- }
- }
- /**
- * 对BASE64加密字符串进行解密
- * <功能详细描述>
- * @param str
- * @return
- * @see [类、类#方法、类#成员]
- */
- public static String getDecryptString(String str){
- BASE64Decoder base64Decoder = new BASE64Decoder();
- try
- {
- byte[] strBytes = base64Decoder.decodeBuffer(str);
- Cipher cipher = Cipher.getInstance("DES");
- cipher.init(Cipher.DECRYPT_MODE, key);
- byte[] encryptStrBytes = cipher.doFinal(strBytes);
- return new String(encryptStrBytes,"UTF-8");
- }
- catch (Exception e)
- {
- throw new RuntimeException(e);
- }
- }
- public static void main(String[] args)
- {
- String name ="root";
- String password="1234";
- String encryname = getEncryptString(name);
- String encrypassword = getEncryptString(password);
- System.out.println(encryname);
- System.out.println(encrypassword);
- System.out.println(getDecryptString(encryname));
- System.out.println(getDecryptString(encrypassword));
- }
- }
需要覆盖convertProperty方法,encryptPropNames存储的是需要解密的属性
[java] view plain copy- public class EncryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer
- {
- private String[] encryptPropNames = {"jdbc.username", "jdbc.password"};
- @Override
- protected String convertProperty(String propertyName, String propertyValue)
- {
- //如果在加密属性名单中发现该属性
- if (isEncryptProp(propertyName))
- {
- String decryptValue = DESUtils.getDecryptString(propertyValue);
- System.out.println(decryptValue);
- return decryptValue;
- }else {
- return propertyValue;
- }
- }
- private boolean isEncryptProp(String propertyName)
- {
- for (String encryptName : encryptPropNames)
- {
- if (encryptName.equals(propertyName))
- {
- return true;
- }
- }
- return false;
- }
- }
- 用
- <bean class="com.cyou.web.common.EncryptPropertyPlaceholderConfigurer" p:location="classpath:/config.properties"></bean>
- 代替
- <context:property-placeholder location="classpath:/config.properties" />
相关文章推荐
- spring web项目 数据库用户名密码加密解密
- springMVC web项目 数据库用户名密码加密解密
- springMVC web项目 数据库用户名密码加密解密
- springMVC web项目 数据库用户名密码加密解密
- spring 数据库用户名密码加密解密
- springbootMaven项目Druid数据库密码加密
- Spring 管理下的web项目,对Properties文件重要参数的加密解密处理
- SpringBoot + jasypt 加密数据库连接用户名和密码
- Spring 数据库配置用户名和密码加密
- Spring 管理下的web项目,对Properties文件重要参数的加密解密处理
- Spring 管理下的web项目,对Properties文件重要参数的加密解密处理(续)
- Web项目中对配置文件中的密码进行加密(数据库连接密码)
- Spring+mysql+druid对数据库连接的用户名密码加密
- [走火入魔失眠夜]浅谈管理软件信息安全,用户名、密码的加密解密【附C#配套加密解密源码】
- Tomcat JNDI 数据库用户名和密码加密(数据库连接池用户和密码加密)
- Struts2+Spring+Hibernate step by step 04 整合Spring之二,从数据库验证用户名和密码
- (3)Spring-boot学习 做一个简单的带访问数据库的web项目
- [走火入魔失眠夜]浅谈管理软件信息安全,用户名、密码的加密解密【附C#配套加密解密源码】
- PB数据库连接描述文件的密码加密和解密原理
- 数据库密码加密公用秘要生成器,数据库密码加密解密入口