加密和解密
对配置文件进行加密:
import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import java.security.spec.InvalidKeySpecException;import javax.crypto.BadPaddingException;import javax.crypto.Cipher;import javax.crypto.IllegalBlockSizeException;import javax.crypto.KeyGenerator;import javax.crypto.NoSuchPaddingException;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import org.apache.commons.codec.binary.Base64;/** * 对网站的jdbc配置文件进行加密 */public class DESEnctypt {//生成秘密密钥并将其转换为字符串public static String getKeyString() {String str = "";try {KeyGenerator kg = KeyGenerator.getInstance("DES");kg.init(56);SecretKey secretKey = kg.generateKey();byte[] b = secretKey.getEncoded();str = Base64.encodeBase64String(b);} catch (Exception e) {e.printStackTrace();}return str;}//执行加密 "KWJ1EMKS76I=":密钥的字符串表现形式 public static String execEncrypt(String b2) throws InvalidKeyException, InvalidKeySpecException, NoSuchAlgorithmException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException {//String str = getKeyString();String str = "KWJ1EMKS76I=";byte[] b = Base64.decodeBase64(str);DESKeySpec dks = new DESKeySpec(b);SecretKeyFactory f = SecretKeyFactory.getInstance("DES");SecretKey key = f.generateSecret(dks);Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, key);byte[] eData = cipher.doFinal(b2.getBytes());String s = Base64.encodeBase64String(eData);return s;}}?
?
对配置文件进行解密:
import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import org.apache.commons.codec.binary.Base64;import org.apache.log4j.Logger;/** * 对jdbc.properties中的value进行解密 */public class DESDecrypt {/** * Logger for this class */private static final Logger logger = Logger.getLogger(DESDecrypt.class);public static String execDecrypt(String bt) {if (logger.isDebugEnabled()) {logger.debug("execDecrypt(String) - start");}try {String str = "KWJ1EMKS76I=";byte[] b = Base64.decodeBase64(str);DESKeySpec dkc = new DESKeySpec(b);SecretKeyFactory f = SecretKeyFactory.getInstance("DES");SecretKey key = f.generateSecret(dkc);Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");cipher.init(Cipher.DECRYPT_MODE, key);byte[] dData = cipher.doFinal(Base64.decodeBase64(bt));//String s = dData.toString();String s = new String(dData);if (logger.isDebugEnabled()) {logger.debug("execDecrypt(String) - end");}return s;} catch (Exception e) {logger.error("execDecrypt(String)", e);throw new RuntimeException(e);}}}?
?