zoukankan      html  css  js  c++  java
  • AES 加密

    JDK提供了算法,代码很简单,拿走用吧……

    import java.security.Key;
    
    import javax.crypto.Cipher;
    import javax.crypto.spec.IvParameterSpec;
    import javax.crypto.spec.SecretKeySpec;
    
    /**
     * 对称加密
     * 
     * @author ChenSS 2016/11/30
     * @version 1.0
     */
    public class AES {
        private static IvParameterSpec iv = new IvParameterSpec("1234567890654321".getBytes());
        
        public static void main(String[] args) {
            try {
                String key = MD5.hexBit16("a");
                String encryStr = AES.encryptBase64("abcd", key);
                System.out.println("密文:" + encryStr);
                String decryStr = AES.decryptBase64(encryStr, key);
                System.out.println("明文:" + decryStr);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        public static String encryptBase64(String data, String publicKey) throws Exception {
            return Base64.byteArrayToBase64(encrypt(data.getBytes(), publicKey));
        }
    
        public static String decryptBase64(String encryptedData, String privateKey) throws Exception {
            return new String(decrypt(Base64.base64ToByteArray(encryptedData), privateKey));
        }
    
        public static String encryptHex(String data, String publicKey) throws Exception {
            return Hex.encodeToString(encrypt(data.getBytes(), publicKey));
        }
        
        public static String decryptHex(String encryptedData, String privateKey) throws Exception {
            return new String(decrypt(Hex.decode(encryptedData.toCharArray()), privateKey));
        }
        
        public static IvParameterSpec getIV(byte[] iv){
            return new IvParameterSpec(iv);
        }
        
        public static Key getKey(byte[] key){
            return new SecretKeySpec(key, "AES");
        }
        
        public static byte[] encrypt(byte[] data, String key) throws Exception{
            return encrypt(data, new SecretKeySpec(key.getBytes(), "AES"),iv);
        }
        
        public static byte[] decrypt(byte[] data, String key) throws Exception{
            return decrypt(data, new SecretKeySpec(key.getBytes(), "AES"),iv);
        }
        
        /**
         * 加密
         */
        public static byte[] encrypt(byte[] data, Key keySpec, IvParameterSpec iv) throws Exception {
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv);
            return cipher.doFinal(data);
        }
        
        /**
         * 解密
         */
        public static byte[] decrypt(byte[] data, Key keySpec, IvParameterSpec iv) throws Exception {
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            cipher.init(Cipher.DECRYPT_MODE, keySpec, iv);
            return cipher.doFinal(data);
        }
    }
  • 相关阅读:
    Python解释器安装
    有钱就放余额宝的人,这个习惯恐怕要改一改!
    这么详细的存储基础知识,你不看看? 会后悔的!
    超全!华为交换机端口vlan详解~
    华为:鸿蒙绝不是安卓换皮!!!
    VS Code 真的会一统江湖吗?
    用户与安全 -(1)Linux用户及组管理
    运维必看!这个技能薪水28.8万,工资竟然还只是零花钱....
    原来 Linux 日志文件系统是这样工作的~
    干货长文:Linux 文件系统与持久性内存介绍
  • 原文地址:https://www.cnblogs.com/chenss15060100790/p/9080497.html
Copyright © 2011-2022 走看看