/**
* AES/ECB/PKCS5Padding (128)
* AES加密 ECB模式 PKCS5填充方式 密钥长度必须为16个字节(128位)
*/
public static void main(String[] args) throws Exception {
//密钥生成器
KeyGenerator kgen = KeyGenerator.getInstance("AES");
//设置密钥长度128位
kgen.init(128, new SecureRandom());
//生成key
SecretKey key = kgen.generateKey();

//长度为16的二进制数组,密钥我们自己生成也可以.
byte[] keyBytes = key.getEncoded();
System.out.println("keyBytes长度是16 = " + keyBytes.length);

//创建AES的密钥
SecretKeySpec aesKey = new SecretKeySpec(keyBytes, "AES");

//加密 模式 填充方式
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, aesKey);

//对abc进行加密,因为明文长度不固定,所以需要先分组在加密,每一组长度16个字节
//不够16的需要进行填充,abc的长度是3个字节,所以要填充13个字节在进行加密
//所以encrypt的长度为16,因为在加密之前填充了
//如果长度正好为16个字节,那么也要新填充一个16长度的组,那么加密后的encrypt的长度为32
byte[] encrypt = cipher.doFinal("abc".getBytes());
System.out.println(encrypt.length);

cipher.init(Cipher.DECRYPT_MODE, aesKey);
byte[] decrypt = cipher.doFinal(encrypt);
System.out.println(new String(decrypt));
}


ECB模式作为最简单的工作模式,直接将明文分组,每组分别加密,每个分组独立且前后文无关

AES/ECB/PKCS5Padding8)_密钥长度


参考​​http://xuanzhui.iteye.com/blog/2399859​