【java】java的aes加密解密的简单使用

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)的一种。

基础的使用流程如下:

 
简单的demo
import 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: 我是要加密的内容

 

 
 
posted @ 2019-09-18 22:57  Theodor  阅读(446)  评论(0编辑  收藏  举报