Android常用加密代码实现

来源:互联网 发布:论述java异常处理机制 编辑:程序博客网 时间:2024/05/21 07:53

DES加密的工具类:

public class DESUtil {    /**     * 根据指定的密钥加密字符串     * @param encryptString 需要加密的字符串     * @param encryptKey 密钥     * @return 加密后的字符串     * @throws Exception     */    public static String encryptDES(String encryptString, String encryptKey)            throws Exception {        // 实例化IvParameterSpec对象,使用指定的初始化向量,初始化向量根据key生成        IvParameterSpec zeroIv = new IvParameterSpec(encryptKey.getBytes("ASCII"));        // 实例化SecretKeySpec类,根据字节数组来构造SecretKey        SecretKeySpec key = new SecretKeySpec(encryptKey.getBytes(), "DES");        // 创建密码器        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");        // 用秘钥初始化Cipher对象        cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);        // 执行加密操作        byte[] encryptedData = cipher.doFinal(encryptString.getBytes());        return Base64.encodeToString(encryptedData, Base64.DEFAULT);    }    /**     * 根据指定的密钥对字符串解密     * @param decrypString 需要解密的字符串     * @param decryptKey 密钥     * @return 解密后的字符串     * @throws Exception     */    public static String decryptDES(String decrypString, String decryptKey)            throws Exception {        byte[] byteMi = Base64.decode(decrypString, Base64.DEFAULT);        // 实例化IvParameterSpec对象,使用指定的初始化向量        IvParameterSpec zeroIv = new IvParameterSpec(decryptKey.getBytes("ASCII"));        // 实例化SecretKeySpec类,根据字节数组来构造SecretKey        SecretKeySpec key = new SecretKeySpec(decryptKey.getBytes(), "DES");        // 创建密码器        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");        // 用秘钥初始化Cipher对象        cipher.init(Cipher.DECRYPT_MODE, key, zeroIv);        // 执行解密操作        byte[] decryptedData = cipher.doFinal(byteMi);        return new String(decryptedData);    }}

AES加密工具类:

public class AESUtil {    public static byte[] encrypt(String content, String password) {        try {            KeyGenerator kgen = KeyGenerator.getInstance("AES");            kgen.init(128, new SecureRandom(password.getBytes()));            SecretKey secretKey = kgen.generateKey();            byte[] enCodeFormat = secretKey.getEncoded();            SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");            Cipher cipher = Cipher.getInstance("AES");// 创建密码器            byte[] byteContent = content.getBytes("utf-8");            cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化            byte[] result = cipher.doFinal(byteContent);            return result; // 加密        } catch (NoSuchAlgorithmException e) {            e.printStackTrace();        } catch (NoSuchPaddingException e) {            e.printStackTrace();        } catch (InvalidKeyException e) {            e.printStackTrace();        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        } catch (IllegalBlockSizeException e) {            e.printStackTrace();        } catch (BadPaddingException e) {            e.printStackTrace();        }        return null;    }    public static byte[] decrypt(byte[] content, String password) {        try {            KeyGenerator kgen = KeyGenerator.getInstance("AES");            kgen.init(128, new SecureRandom(password.getBytes()));            SecretKey secretKey = kgen.generateKey();            byte[] enCodeFormat = secretKey.getEncoded();            SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");            Cipher cipher = Cipher.getInstance("AES");// 创建密码器            cipher.init(Cipher.DECRYPT_MODE, key);// 初始化            byte[] result = cipher.doFinal(content);            return result; // 加密        } catch (NoSuchAlgorithmException e) {            e.printStackTrace();        }  catch (InvalidKeyException e) {            e.printStackTrace();        } catch (IllegalBlockSizeException e) {            e.printStackTrace();        } catch (BadPaddingException e) {            e.printStackTrace();        } catch (NoSuchPaddingException e) {            e.printStackTrace();        }        return null;    }
0 0
原创粉丝点击