- import java.security.InvalidKeyException;
- import java.security.Key;
- import java.security.NoSuchAlgorithmException;
- import javax.crypto.BadPaddingException;
- import javax.crypto.Cipher;
- import javax.crypto.IllegalBlockSizeException;
- import javax.crypto.NoSuchPaddingException;
- import javax.crypto.spec.SecretKeySpec;
- import org.apache.commons.codec.binary.Base64;
- public class DES {
- public DES() {
- }
- public static DES getInstance(String key) throws NoSuchPaddingException,
- NoSuchAlgorithmException {
- return getInstance(getKeyByStr(key));
- }
- public static DES getInstance(byte key[]) throws NoSuchPaddingException,
- NoSuchAlgorithmException {
- DES des = new DES();
- if (des.key == null) {
- SecretKeySpec spec = new SecretKeySpec(key, "DES");
- des.key = spec;
- }
- des.cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
- return des;
- }
- public byte[] encrypt(byte b[]) throws InvalidKeyException,
- BadPaddingException, IllegalBlockSizeException,
- IllegalStateException {
- byte byteFina[] = null;
- cipher.init(1, key);
- byteFina = cipher.doFinal(b);
- return byteFina;
- }
- public byte[] decrypt(byte b[]) throws InvalidKeyException,
- BadPaddingException, IllegalBlockSizeException,
- IllegalStateException {
- byte byteFina[] = null;
- cipher.init(2, key);
- byteFina = cipher.doFinal(b);
- return byteFina;
- }
- public static byte[] getKeyByStr(String str) {
- byte bRet[] = new byte[str.length() / 2];
- for (int i = 0; i < str.length() / 2; i++) {
- Integer itg = new Integer(16 * getChrInt(str.charAt(2 * i))
- + getChrInt(str.charAt(2 * i + 1)));
- bRet[i] = itg.byteValue();
- }
- return bRet;
- }
- private static int getChrInt(char chr) {
- int iRet = 0;
- if (chr == "0".charAt(0))
- iRet = 0;
- if (chr == "1".charAt(0))
- iRet = 1;
- if (chr == "2".charAt(0))
- iRet = 2;
- if (chr == "3".charAt(0))
- iRet = 3;
- if (chr == "4".charAt(0))
- iRet = 4;
- if (chr == "5".charAt(0))
- iRet = 5;
- if (chr == "6".charAt(0))
- iRet = 6;
- if (chr == "7".charAt(0))
- iRet = 7;
- if (chr == "8".charAt(0))
- iRet = 8;
- if (chr == "9".charAt(0))
- iRet = 9;
- if (chr == "A".charAt(0))
- iRet = 10;
- if (chr == "B".charAt(0))
- iRet = 11;
- if (chr == "C".charAt(0))
- iRet = 12;
- if (chr == "D".charAt(0))
- iRet = 13;
- if (chr == "E".charAt(0))
- iRet = 14;
- if (chr == "F".charAt(0))
- iRet = 15;
- return iRet;
- }
- private Key key;
- private Cipher cipher;
- /**
- * @interpret 进行base64加密操作
- * @param text
- * @param keyString
- * @return String
- */
- public String encrypt(String text, String keyString) {
- String body = null;
- try {
- DES des = DES.getInstance(keyString);
- byte[] b = des.encrypt(text.getBytes("UTF8"));
- body = new String(Base64.encodeBase64(b));
- } catch (Exception ex) {
- }
- return body;
- }
- /**
- * @interpret 进行base64进行解密
- * @param text
- * @param keyString
- * @return String
- */
- public String decrypt(String text, String keyString) {
- String body = null;
- try {
- DES des = DES.getInstance(keyString);
- byte[] b = Base64.decodeBase64(text.getBytes());
- body = new String(des.decrypt(b), "UTF8");
- } catch (Exception e) {
- e.printStackTrace();
- }
- return body;
- }
- public String authcode(String content, String operation, String key){
- String encontent = null;
- if (operation != null && operation.equals("DECODE")) {
- encontent = encrypt(content,key);
- } else if (operation != null && operation.equals("ENCODE")) {
- encontent = decrypt(content,key);
- }
- return encontent;
- }
- public static void main(String[] args) {
- DES des = new DES();
- System.out.println(des.authcode("wewweewewew=","DECODE","0102030405060708"));//加密
- System.out.println(des.authcode("d8fPhfd9JkW99p8aqhtVIA==","ENCODE","0102030405060708"));//解密
- }
- }
来源: http://www.phpxs.com/code/1002492/