DES加密算法

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"));    }}

更多相关文章

  1. android的数据库API操作
  2. Android对IO进行读写操作实例
  3. Android中SeekBar进度条操作
  4. android下获取无线wif信号、ssid、MAC等操作类
  5. 文件的读写操作
  6. Android8.1添加MTP数据同步操作
  7. Android果然强大,连截字这种操作都集成了
  8. Welcome, Android Q(刷机有风险,操作需谨慎)

随机推荐

  1. php7中停止php-fpm服务的方法详解
  2. php中Swoole的热更新实现代码实例
  3. Android(安卓)Studio 第三方库的导入「以
  4. Android.GridView事件监听
  5. Android(安卓)启动应用程序方式
  6. android在布局中动态增加view时的层级控
  7. Android(安卓)Camera 使用小结
  8. 升级代码的大概设计
  9. android
  10. OpenCore 的代码结构