原视频地址
Imooc_JAVA实现对称加密3-1 JAVA-对称加密算法AES
package AES;
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.Hex;
public class AES {
private static String src = "imooc security aes";
public static void main(String[] args) {
jdkAES();
}//main方法结束
private static void jdkAES(){
try {
//生成KEY
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
//初始化keyGenerator
// keygenerator.init(168);
// SecureRandom()生成默认长度的类
keyGenerator.init(new SecureRandom());
//调用方法生成密匙secretKey 生成秘钥
SecretKey secretKey = keyGenerator.generateKey();
//密钥进行getEncoded()获取比特编码byte[]
byte[] keyBytes = secretKey.getEncoded();
//生成KEY 进行KEY的转换
//SecretKeySpec(KEY, 加密的方式)
Key key = new SecretKeySpec(keyBytes, "AES");
//加密
//getInstance("加解密算法/工作模式/填充方式")
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
//cipher.init(opmode, certificate); 第一个参数为模式 第二个参数为转换后的KEY
// Cipher.ENCRYPT_MODE加密模式 转换后的KEY:convertsecretKey
cipher.init(Cipher.ENCRYPT_MODE, key);
//doFinal(input); input即使要被加密的内容
byte[] result = cipher.doFinal(src.getBytes());
System.out.println("jdk AES encrypt:"+Base64.encodeBase64String(result));
//解密前需要重新初始化
//cipher.init(opmode, certificate); 第一个参数为模式 第二个参数为转换后的KEY
// Cipher.DECRYPT_MODE解密模式 转换后的KEY:convertsecretKey
cipher.init(Cipher.DECRYPT_MODE, key);
result = cipher.doFinal(result);
System.out.println("jdk AES decrypt:"+new String(result));
} catch (Exception e) {
e.printStackTrace();
}
}//jdkAES方法
public static void bcAES(){
//作业
}//bcAES方法
}//AES类结束