zoukankan      html  css  js  c++  java
  • DES的加解密For android

       public static String setEncrypt(String key, String password) {
            String encryptingCode = null;
            try {
                encryptingCode = encrypt(key, password);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return encryptingCode;
        }
    
        public static String getEncrypt(String key, String password) {
            String decryptingCode = null;
            try {
                decryptingCode = decrypt(key, password);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return decryptingCode;
        }
    
        public static String encrypt(String seed, String cleartext)
                throws Exception {
            byte[] rawKey = getRawKey(seed.getBytes());
            byte[] result = encrypt(rawKey, cleartext.getBytes());
            return toHex(result);
        }
    
        public static String decrypt(String seed, String encrypted)
                throws Exception {
            byte[] rawKey = getRawKey(seed.getBytes());
            byte[] enc = toByte(encrypted);
            byte[] result = decrypt(rawKey, enc);
            return new String(result);
        }
    
        private static byte[] getRawKey(byte[] seed) throws Exception {
            KeyGenerator kgen = KeyGenerator.getInstance("AES");
            SecureRandom sr = SecureRandom.getInstance("SHA1PRNG", "Crypto");
            sr.setSeed(seed);
            kgen.init(128, sr);
            SecretKey skey = kgen.generateKey();
            byte[] raw = skey.getEncoded();
            return raw;
        }
    
        private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {
            SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
            Cipher cipher = Cipher.getInstance("AES");
            cipher.init(Cipher.ENCRYPT_MODE, skeySpec, new IvParameterSpec(
                    new byte[cipher.getBlockSize()]));
            byte[] encrypted = cipher.doFinal(clear);
            return encrypted;
        }
    
        private static byte[] decrypt(byte[] raw, byte[] encrypted)
                throws Exception {
            SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
            Cipher cipher = Cipher.getInstance("AES");
            cipher.init(Cipher.DECRYPT_MODE, skeySpec, new IvParameterSpec(
                    new byte[cipher.getBlockSize()]));
            byte[] decrypted = cipher.doFinal(encrypted);
            return decrypted;
        }
    
        private static String toHex(String txt) {
            return toHex(txt.getBytes());
        }
    
        private static String fromHex(String hex) {
            return new String(toByte(hex));
        }
    
        private static byte[] toByte(String hexString) {
            int len = hexString.length() / 2;
            byte[] result = new byte[len];
            for (int i = 0; i < len; i++)
                result[i] = Integer.valueOf(hexString.substring(2 * i, 2 * i + 2),
                        16).byteValue();
            return result;
        }
    
        private static String toHex(byte[] buf) {
            if (buf == null)
                return "";
            StringBuffer result = new StringBuffer(2 * buf.length);
            for (int i = 0; i < buf.length; i++) {
                appendHex(result, buf[i]);
            }
            return result.toString();
        }
    
        private final static String HEX = "0123456789ABCDEF";
    
        private static void appendHex(StringBuffer sb, byte b) {
            sb.append(HEX.charAt((b >> 4) & 0x0f)).append(HEX.charAt(b & 0x0f));
        }
    
  • 相关阅读:
    Oracle
    JSON字符串转换为JSON对象
    dynamic 动态获取object数据
    Kylin 技术架构(三)
    Kylin 工作原理(二)
    Kylin 简介(一)
    数仓建模之聚集型事实表设计案例
    数仓建模之累计快照事实表设计案例
    数仓建模之周期快照事实表设计案例
    数仓建模之事务事实表设计案例
  • 原文地址:https://www.cnblogs.com/lyxin/p/6089068.html
Copyright © 2011-2022 走看看