AES 加密 解密

来源:互联网 发布:网络通信招聘 编辑:程序博客网 时间:2024/05/20 04:27


private static byte[] encryptByAES(String encryptStr) {
       
        if (StringUtil.isNullOrEmpty(encryptStr)) {
            throw new IllegalArgumentException();
        }
       
        byte[] encrypted = null;
        try {
            // (1)jiamikeyshengcheng
            KeyGenerator keygen = KeyGenerator.getInstance("AES");
            SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
            keygen.init(random);
            key = keygen.generateKey().getEncoded();
           
            // (2)jiamizhunbei
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
            byte[] ivArr = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
            IvParameterSpec iv = new IvParameterSpec(ivArr);
            cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv);
           
             // (3)jiami
            encrypted = cipher.doFinal(encryptStr.getBytes());

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (InvalidAlgorithmParameterException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        }

        return encrypted;
    }
   
    private static byte[] decrypt(byte[] encrypByte) {
        byte[] original = null;
        try {
            SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
           
            byte[] ivArr = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
            IvParameterSpec iv = new IvParameterSpec(ivArr);
           
            cipher.init(Cipher.DECRYPT_MODE, keySpec, iv);
            original = cipher.doFinal(encrypByte);


        } catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (InvalidAlgorithmParameterException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        }
        return original;
    }


    public static void main(String[] args) throws Exception {
        byte[] encrypByte = encryptByAES("message");
        byte[] original = decrypt(encrypByte);
        System.out.println(new String(original));//输出message
    }

0 0
原创粉丝点击