介于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