Java 使用AES/CBC/PKCS7Padding 加解密字符串

本文介绍了Java中如何利用AES/CBC/PKCS7Padding进行加解密操作,由于Java默认仅支持PKCS5Padding,故采用bouncycastle库实现PKCS7Padding。通过引入bcprov-jdk16-139.jar,实现了加解密功能,并给出了测试示例。
摘要由CSDN通过智能技术生成

介于java 不支持PKCS7Padding,只支持PKCS5Padding 但是PKCS7Padding 和 PKCS5Padding 没有什么区别,要实现在java端用PKCS7Padding填充,需要用到bouncycastle组件来实现

所以需要一个jar 来支持。bcprov-jdk16-139.jar

下载地址:http://www.bouncycastle.org/archive/139/bcprov-jdk16-139.jar

废话不说了,下面上代码

加解密类

import org.bouncycastle.jce.provider.BouncyCastleProvider;

import java.io.UnsupportedEncodingException;
import java.security.Key;
import java.security.Security;
import java.util.Arrays;

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

/**
 * @author ngh AES256算法
 * <p>
 * CBC 模式
 * <p>
 * PKCS7Padding 填充模式
 * <p>
 * CBC模式需要添加一个参数iv
 * <p>
 * 介于java 不支持PKCS7Padding,只支持PKCS5Padding 但是PKCS7Padding 和 PKCS5Padding
 * 没有什么区别 要实现在java端用PKCS7Padding填充,需要用到bouncycastle组件来实现
 */
public class AES {

    // 算法名称
    final String KEY_ALGORITHM = "AES";
    // 加解密算法/模式/填充方式
    final String algorithmStr = "AES/CBC/PKCS7Padding";

    //

    private Key key;

    private Cipher cipher;

    boolean isInited = false;
    String pwd = "12345678"; // 密钥
    byte[] keyBytes;
    byte[] iv = "0102030405060708".getBytes();

    /**
     * 密钥初始化  256
     *
     * @param keyBytes 密钥
     */
    private void init256(byt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值