zoukankan      html  css  js  c++  java
  • DesUtils工具类

    public final class DesUtils {
        private static final String DES = "DES";
        private static final String KEY = "4YztMHI7PsT4rLZN";
    
        private DesUtils() {}
    
        private static byte[] encrypt(byte[] src, byte[] key) throws Exception {
            SecureRandom sr = new SecureRandom();
            DESKeySpec dks = new DESKeySpec(key);
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
            SecretKey secretKey = keyFactory.generateSecret(dks);
            Cipher cipher = Cipher.getInstance(DES);
            cipher.init(Cipher.ENCRYPT_MODE, secretKey, sr);
            return cipher.doFinal(src);
        }
    
        private static byte[] decrypt(byte[] src, byte[] key) throws Exception {
            SecureRandom sr = new SecureRandom();
            DESKeySpec dks = new DESKeySpec(key);
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
            SecretKey secretKey = keyFactory.generateSecret(dks);
            Cipher cipher = Cipher.getInstance(DES);
            cipher.init(Cipher.DECRYPT_MODE, secretKey, sr);
            return cipher.doFinal(src);
        }
    
        private static String byte2hex(byte[] b) {
            String hs = "";
            String temp = "";
            for (int n = 0; n < b.length; n++) {
                temp = (java.lang.Integer.toHexString(b[n] & 0XFF));
                if (temp.length() == 1)
                    hs = hs + "0" + temp;
                else
                    hs = hs + temp;
            }
            return hs.toUpperCase();
    
        }
    
        private static byte[] hex2byte(byte[] b) {
            if ((b.length % 2) != 0)
                throw new IllegalArgumentException("length not even");
            byte[] b2 = new byte[b.length / 2];
            for (int n = 0; n < b.length; n += 2) {
                String item = new String(b, n, 2);
                b2[n / 2] = (byte) Integer.parseInt(item, 16);
            }
            return b2;
        }
    
        private static String decode(String src, String key) {
            String decryptStr = "";
            try {
                byte[] decrypt = decrypt(hex2byte(src.getBytes()), key.getBytes());
                decryptStr = new String(decrypt);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return decryptStr;
        }
    
        private static String encode(String src, String key){
            byte[] bytes = null;
            String encryptStr = "";
            try {
                bytes = encrypt(src.getBytes(), key.getBytes());
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            if (bytes != null)
                encryptStr = byte2hex(bytes);
            return encryptStr;
        }
    
        /**
         * 解密
         */
        public static String decode(String src) {
            return decode(src, KEY);
        }
    
        /**
         * 加密
         */
        public static String encode(String src) {
            return encode(src, KEY);
        }
    }

    测试

    public static void main(String[] args) {
        String ss = "uu123@#$";
        String encodeSS = encode(ss);
        System.out.println(encodeSS);
        String decodeSS = decode(encodeSS);
        System.out.println(decodeSS);
    }
    result:
        6EA84873A948B299936006D75B7CA819
        uu123@#$




  • 相关阅读:
    QT 十六进制字符串转化为十六进制编码
    C语言中函数有输出参数
    QT 字符串相等间距字符间增加字符
    CRC校验算法
    QT 环境下开发socketCan接口程序
    QT 十六进制整数变为字符串自动补0 && 十进制补零
    C语言函数返回数组
    JNI文件中命名类与JAVA文件中匹配
    mini6410-JNI-led
    gis 出现问题解决办法
  • 原文地址:https://www.cnblogs.com/syp172654682/p/9128706.html
Copyright © 2011-2022 走看看