DES加密+Base64轉換轉實現代碼
首先,對用戶輸入的password進行MD5轉換,然后,對用戶輸入的Data進行des加密,最后進行base64轉換為密文;
解密,對用戶輸入的password進行MD5轉換,然后,對用戶輸入的Data進行base64解密,最后進行des解密為明文;
現在提供這樣一個幫助類,進行類似操作!package httpVisit.action;
import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec;
import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder;
/**
- @author:Heweipo
- @version 1.00
*/ public class DesCoderUtil {
private static byte[] keys = { 1, -1, 1, -1, 1, -1, 1, -1 };
private static String key = "leagsoft";
public static String getKey() {
return key;
}
public static void setKey(String key) {
DesCoderUtil.key = key;
}
/**
- <p>
- 對password進行MD5加密
- @param source
- @return
- @return byte[]
author: Heweipo */ public static byte[] getMD5(byte[] source) { byte tmp[] = null; try {
java.security.MessageDigest md = java.security.MessageDigest .getInstance("MD5"); md.update(source); tmp = md.digest();
} catch (Exception e) {
e.printStackTrace();
} return tmp; }
/**
- <p>
- 采用JDK內置類進行真正的加密操作
- @param byteS
- @param password
- @return
- @return byte[]
author: Heweipo */ private static byte[] encryptByte(byte[] byteS, byte password[]) { byte[] byteFina = null; try {// 初始化加密/解密工具
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); DESKeySpec desKeySpec = new DESKeySpec(password); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey secretKey = keyFactory.generateSecret(desKeySpec); IvParameterSpec iv = new IvParameterSpec(keys); cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv); byteFina = cipher.doFinal(byteS);
} catch (Exception e) {
throw new RuntimeException(e);
} return byteFina; }
/**
- <p>
- 采用JDK對應的內置類進行解密操作
- @param byteS
- @param password
- @return
- @return byte[]
author: Heweipo */ private static byte[] decryptByte(byte[] byteS, byte password[]) { byte[] byteFina = null; try {// 初始化加密/解密工具
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); DESKeySpec desKeySpec = new DESKeySpec(password); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey secretKey = keyFactory.generateSecret(desKeySpec); IvParameterSpec iv = new IvParameterSpec(keys); cipher.init(Cipher.DECRYPT_MODE, secretKey, iv); byteFina = cipher.doFinal(byteS);
} catch (Exception e) {
throw new RuntimeException(e);
} return byteFina; }
/**
- <p>
- Des加密strMing,然后base64轉換
- @param strMing
- @param md5key
- @return
- @return String
author: Heweipo */ public static String encryptStr(String strMing, byte md5key[]) { byte[] byteMi = null; byte[] byteMing = null; String strMi = ""; try {
byteMing = strMing.getBytes("utf-8"); byteMi = encryptByte(byteMing, md5key); BASE64Encoder base64Encoder = new BASE64Encoder(); strMi = base64Encoder.encode(byteMi);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
byteMing = null; byteMi = null;
} return strMi; }
/**
- <p>
- Base64轉換strMi,然后進行des解密
- @param strMi
- @param md5key
- @return
- @return String
author: Heweipo */ public static String decryptStr(String strMi, byte md5key[]) { byte[] byteMing = null; String strMing = ""; try {
BASE64Decoder decoder = new BASE64Decoder(); byteMing = decoder.decodeBuffer(strMi); byteMing = decryptByte(byteMing, md5key); strMing = new String(byteMing);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
byteMing = null;
} return strMing; }
public static void main(String[] args) {
String[] keys = {"leagsoft","leagsoftpo","leagsoftiu","leagsoftyy","leagsoftew","leagsoftmm"}; for(String key : keys){
String data = "我是learn_more,who are you?"; try{ System.out.println(DesCoderUtil.encryptStr(data, DesCoderUtil.getMD5(key.getBytes("utf-8")))); System.out.println("--------------"); System.out.println(DesCoderUtil.decryptStr(DesCoderUtil.encryptStr(data, DesCoderUtil.getMD5(key.getBytes("utf-8"))), DesCoderUtil.getMD5(key.getBytes("utf-8")))); }catch(Exception e){ e.printStackTrace(); }
} }
}</pre></span> 來自:http://my.oschina.net/u/1989321/blog/335210