DES加密工具类:
package com.sharp.cxf.utils; import java.security.Key; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; /** * 类 名 称: DESUtils * 类 描 述: 加密解密工具类 * 创 建 人: peng.xiao * 创建时间: 2013-7-21 上午8:04:51 * * 修 改 人: peng.xiao * 操作时间: 2013-7-21 上午8:04:51 * 操作原因: * */ public class DESUtils { private static Key key; private static String KEY_STR="myKey"; static{ try{ KeyGenerator generator = KeyGenerator.getInstance("DES"); generator.init(new SecureRandom(KEY_STR.getBytes())); key = generator.generateKey(); generator = null; }catch(Exception e){ throw new RuntimeException(e); } } /** * 方法描述: 获得des加密后的字符串 * 作 者: peng.xiao * 日 期: 2013-7-21-上午8:01:08 * @param str * @return * 返回类型: String */ public static String getEncryptString(String str){ try{ BASE64Encoder encode = new BASE64Encoder(); byte[] strBytes = str.getBytes("UTF8"); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.ENCRYPT_MODE, key); byte[] encryptStrBytes = cipher.doFinal(strBytes); return encode.encode(encryptStrBytes); }catch(Exception e){ throw new RuntimeException(e); } } /** * 方法描述: 获得解密后的字符串 * 作 者: peng.xiao * 日 期: 2013-7-21-上午8:04:15 * @param str * @return * 返回类型: String */ public static String getDecryptString(String str){ BASE64Decoder decode = new BASE64Decoder(); try{ byte[] strBytes = decode.decodeBuffer(str); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.DECRYPT_MODE, key); byte[] decryptStrBytes = cipher.doFinal(strBytes); return new String(decryptStrBytes,"UTF8"); }catch(Exception e){ throw new RuntimeException(e); } } public static void main(String[] args) { System.out.println(getEncryptString("sharp")); } }
属性文件重写:
package com.sharp.cxf.utils; import java.util.ArrayList; import java.util.List; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.config.PropertyOverrideConfigurer; public class EncryPropertyConfigurer extends PropertyOverrideConfigurer{ private List<String> entryProName = new ArrayList<String>(); public List<String> getEntryProName() { return entryProName; } public void setEntryProName(List<String> entryProName) { this.entryProName = entryProName; } @Override protected void processKey(ConfigurableListableBeanFactory factory, String key, String value) throws BeansException { if(entryProName.contains(key)){ value = DESUtils.getDecryptString(value); } super.processKey(factory, key, value); } }