原視頻地址
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類結束