• android AES 加密


    import javax.crypto.Cipher;
    import javax.crypto.KeyGenerator;
    import javax.crypto.SecretKey;
    import javax.crypto.spec.IvParameterSpec;
    import javax.crypto.spec.SecretKeySpec;

    /**
     * @作 用:
     * @修 改 人:
     * @日 期:
     *
     */
    public class AesUtils {
        public static final String key = "1123131313131313131313131313131313";
        /**
         * 加密
         *
         * @param clearText
         * @return
         */
        public static String encrypt(String clearText) {
            byte[] result = null;
            try {
                byte[] rawkey = getRawKey(key.getBytes());
                result = encrypt(rawkey, clearText.getBytes());
            } catch (Exception e) {
                e.printStackTrace();
            }
            String content = toHex(result);
            return content;

        }

        /**
         * 解密
         *
         * @param encrypted
         * @return
         */
        public static String decrypt(String encrypted) {
            byte[] rawKey;
            try {
                rawKey = getRawKey(key.getBytes());
                byte[] enc = toByte(encrypted);
                byte[] result = decrypt(rawKey, enc);
                String coentn = new String(result);
                return coentn;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }

        /**
         * @param seed
         * @return
         * @throws Exception "RSA/None/PKCS1Padding"
         */
        private static byte[] getRawKey(byte[] seed) throws Exception {
            KeyGenerator kgen = KeyGenerator.getInstance("AES");
            SecureRandom sr = null;
            if (Build.VERSION.SDK_INT > 17) {
                //加密随机数生成器
                sr = SecureRandom.getInstance("SHA1PRNG", "Crypto");//Android4.22需要用这个
            } else {
                sr = SecureRandom.getInstance("SHA1PRNG"); //(原版)
            }
            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 cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            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 cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            cipher.init(Cipher.DECRYPT_MODE, skeySpec, new IvParameterSpec(
                    new byte[cipher.getBlockSize()]));
            byte[] decrypted = cipher.doFinal(encrypted);
            return decrypted;
        }

        public static String toHex(String txt) {
            return toHex(txt.getBytes());
        }

        public static String fromHex(String hex) {
            return new String(toByte(hex));
        }

        public 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;
        }

        public 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 static void appendHex(StringBuffer sb, byte b) {
            final String HEX = "0123456789ABCDEF";
            sb.append(HEX.charAt((b >> 4) & 0x0f)).append(HEX.charAt(b & 0x0f));
        }
    }

  • 相关阅读:
    mvc多级views目录
    JSP中文乱码总结
    sql查询指定表外键约束
    eclipse设置汉化
    c#序列化json字符串及处理
    获取需要登录认证的远程数据
    vs2013 括号自动配对样式设置
    c#中事物使用
    ListView遍历每个Item出现NullPointerException的异常
    gen目录无法更新,或者gen目录下的R.JAVA文件无法生成
  • 原文地址:https://www.cnblogs.com/zhou2016/p/5570752.html
Copyright © 2020-2023  润新知