码农之家 - JAVA
type: channel
link: http://www.liyx.fun/index.php/tag/JAVA/
items: JAVA AES256 ECBwithPKCS7

JAVA AES256 ECBwithPKCS7
type: item
date: 2021-09-18T14:57:00+08:00
description: import org.apache.commons.codec.binary.Hex; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.security.Security; public class AES256ECBwithPKCS7 { //add new bouncycastle ciphers static { Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); } /** * encrypt input text * * @param input * @param key * @return */ public static String encrypt(String input, String key) { byte[] crypted = null; try { byte[] bytes = key.getBytes(); SecretKeySpec skey = new SecretKeySpec(bytes, "AES"); byte[] keyBytes = skey.getEncoded(); String hexKey = ParseSystemUtil.parseByte2HexStr(keyBytes); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding"); cipher.init(Cipher.ENCRYPT_MODE, skey); crypted = cipher.doFinal(input.getBytes()); } catch (Exception e) { System.out.println(e.toString()); e.printStackTrace(); } return ParseSystemUtil.parseByte2HexStr(crypted); } /** * decrypt input text * * @param input * @param key * @return */ public static String decrypt(String input, String key) { byte[] output = null; try { SecretKeySpec skey = new SecretKeySpec(key.getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding"); cipher.init(Cipher.DECRYPT_MODE, skey); output = cipher.doFinal(Hex.decodeHex(input.toCharArray())); } catch (Exception e) { System.out.println(e.toString()); } return new String(output); } } 使用：public static void main(String[] args) throws Exception { String key = "2C4C68B764834D48920A5DE5B2DE3FEC"; String data = "0123456789"; String encrypted = AES256ECBwithPKCS7.encrypt(data, key); System.out.println("2加密后数据: " + encrypted); String decrypted = AES256ECBwithPKCS7.decrypt(AES256ECBwithPKCS7.encrypt(data, key), key); System.out.println("2解密后数据: " + decrypted); } jce_policy里的文件覆盖jre/lib下secrity文件夹的同名文件，比如： jdk1.8.0_112jrelibsecurity。bcprov 和 codec 引用到项目内。jce_policy-8.zipbcprov-jdk15to18-1.69.jarcommons-codec-1.15.jar