一、背景
将java代码的AES加密demo用python语言实现(通过pycryptodome包)
二、关键词
Python3、pycryptodome、AES/CBC/PKCS5padding、中文
三、java代码加密demo
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
private static String sKey = "********************************"; //密钥是string类型
private static String ivParameter = sKey.substring(0, 16); ; //偏移量是密钥截取16位,也是string类型
/**
* AES 加密
* @param str 明文
* @param key 秘钥
* @return 返回加密密文
* @throws Exception
*/
public static String encrypt(String str) throws Exception {
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] raw = sKey.getBytes(); // 密钥转成byte
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes()); //偏移量转成byte
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
byte[] encrypted = cipher.doFinal(str.getBytes("utf-8"));
return Base64.encodeBase64String(encrypted); //base64编码
} catch (Exception ex) {
return null;
}
}
四、java代码解密demo
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
pri