AES 加密 解密



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
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值