java的安全体系由四部分组成:
- JCA(Java Cryptography Architecture) 提供基本的加密框架,比如消息摘要、数字签名
- JCE(Java Cryptography Extension) 提供基本的加密算法 比如DES、AES、RSA(非对称)算法
- JSSE(Java Secure Socket Extension) 提供基于SSL的加密功能,主要用于网络传输安全
- JAAS(Java Authentication and Authorization Service) 提供了java程序的各种鉴权服务
高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的),属于JAVA JCE(Java Cryptography Extension)的一种。
基础的使用流程如下:
简单的demoimport javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.security.Key; import java.util.Base64; public class Main { public static String src = "我是要加密的内容"; public static void main(String[] args) { try { // 生成随机Key KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); keyGenerator.init(128); SecretKey secretKey = keyGenerator.generateKey(); byte [] keyBytes = secretKey.getEncoded(); // Key 转换 Key key = new SecretKeySpec(keyBytes, "AES"); // 加密 Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); // ECB:工作模式;PKCS5Padding:填充方式 cipher.init(Cipher.ENCRYPT_MODE, key); byte [] result = cipher.doFinal(src.getBytes()); System.out.println("jdk aes encrypt: " + Base64.getEncoder().encodeToString(result)); // 这里用Base64加密是为了更好的展示数据 // 解密 cipher.init(Cipher.DECRYPT_MODE, key); result = cipher.doFinal(result); System.out.println("jdk aes decrypt: " + new String (result)); } catch (Exception e) { e.printStackTrace(); } } }
输出结果
jdk aes encrypt: 9dEOgC8dlWWEKp4lhnyNWxGzTSHAovnLmc3lPKqg+X4= jdk aes decrypt: 我是要加密的内容