• 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的启动过程共经历四个阶段:
    Oracle数据库启动原理
    Oracle LISTENER监听文件参数详解及Lsnrctl命令综述
    Oracle TNS简述
    linux 各级目录的作用
    oracle 监听器的工作原理
    插入标识列
    sql server日期格式转换方法大全
    html获取输入的值的问题
    关闭窗口 不弹出提示
  • 原文地址:https://www.cnblogs.com/lyxin/p/6089068.html
Copyright © 2020-2023  润新知