java实现的AES加密算法完整实例

下面是“Java实现的AES加密算法完整实例”的完整攻略:

一、概述

AES(Advanced Encryption Standard)是一种常用的对称加密算法,之前常用的DES算法已经不再安全。在Java中,可以通过javax.crypto包中的AES算法实现加密和解密。

二、实现步骤

  1. 生成AES密钥
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom secureRandom = new SecureRandom();
kgen.init(128, secureRandom);
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
  1. 加密明文
byte[] byteContent = plainText.getBytes("utf-8");
Cipher cipher = Cipher.getInstance("AES");
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] result = cipher.doFinal(byteContent);
  1. 解密密文
Cipher cipher = Cipher.getInstance("AES");
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] result = cipher.doFinal(cipherText);

三、完整实例示例

示例1

public class AESEncryptionExample {

    private static String plainText = "Hello, World! This is AES encryption example.";

    public static void main(String[] args) throws Exception {

        // 1. 生成AES密钥
        KeyGenerator kgen = KeyGenerator.getInstance("AES");
        SecureRandom secureRandom = new SecureRandom();
        kgen.init(128, secureRandom);
        SecretKey secretKey = kgen.generateKey();
        byte[] enCodeFormat = secretKey.getEncoded();

        // 2. 加密明文
        byte[] byteContent = plainText.getBytes("utf-8");
        Cipher cipher = Cipher.getInstance("AES");
        SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
        cipher.init(Cipher.ENCRYPT_MODE, key);
        byte[] result = cipher.doFinal(byteContent);
        System.out.println("加密结果:" + Hex.encodeHexString(result));

        // 3. 解密密文
        cipher = Cipher.getInstance("AES");
        key = new SecretKeySpec(enCodeFormat, "AES");
        cipher.init(Cipher.DECRYPT_MODE, key);
        byte[] decryptedResult = cipher.doFinal(result);
        System.out.println("解密结果:" + new String(decryptedResult));
    }
}

输出结果:

加密结果:f5d6c59d02faf570a07d2aa68942231170d5b3066decf40ef81f23455fe2aa909c6801fd2aad00017c1e2d7494791465
解密结果:Hello, World! This is AES encryption example.

示例2

public class AESEncryptionExample {

    private static String plainText = "这是一段中文明文";

    public static void main(String[] args) throws Exception {

        // 1. 生成AES密钥
        KeyGenerator kgen = KeyGenerator.getInstance("AES");
        SecureRandom secureRandom = new SecureRandom();
        kgen.init(128, secureRandom);
        SecretKey secretKey = kgen.generateKey();
        byte[] enCodeFormat = secretKey.getEncoded();

        // 2. 加密明文
        byte[] byteContent = plainText.getBytes("utf-8");
        Cipher cipher = Cipher.getInstance("AES");
        SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
        cipher.init(Cipher.ENCRYPT_MODE, key);
        byte[] result = cipher.doFinal(byteContent);
        System.out.println("加密结果:" + Hex.encodeHexString(result));

        // 3. 解密密文
        cipher = Cipher.getInstance("AES");
        key = new SecretKeySpec(enCodeFormat, "AES");
        cipher.init(Cipher.DECRYPT_MODE, key);
        byte[] decryptedResult = cipher.doFinal(result);
        System.out.println("解密结果:" + new String(decryptedResult));
    }
}

输出结果:

加密结果:cec96c19c049e5d664d1d9c7664099a7c8265a16a4344f43f952c03878cc8f09
解密结果:这是一段中文明文

以上就是Java实现的AES加密算法完整实例的攻略,包括了生成密钥、加密和解密三个步骤,并且给出了两个示例,一个是英文明文,一个是中文明文。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现的AES加密算法完整实例 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • fastjson 使用方法详细介绍

    Fastjson 使用方法详细介绍 Fastjson 是一款 Java 的 JSON 库,可以将 Java 对象与 JSON 互相转换。下面将详细介绍 Fastjson 的使用方法。 依赖引入 在使用 Fastjson 之前,需要先引入依赖。 Maven 依赖 在 pom.xml 文件中添加以下依赖: <dependency> <group…

    Java 2023年5月26日
    00
  • 详解springmvc常用5种注解

    让我们来详解一下SpringMVC常用的5种注解。 1. @RequestMapping @RequestMapping注解可以定义控制器方法的URL值。 一个控制器可以有多个方法,并且它们都可以映射到不同的URL值。 示例代码: @Controller @RequestMapping("/users") public class Use…

    Java 2023年6月15日
    00
  • Springboot hibernate envers使用过程详解

    Springboot hibernate envers使用过程详解 本文将详细讲解在Spring Boot项目中如何使用Hibernate Envers进行数据版本管理的过程。Envers是一个Hibernate扩展,用于跟踪实体的版本历史记录。通过使用Envers,我们可以在任何时间点查看实体的先前版本。 1. 添加依赖 首先,我们需要将Hibernate…

    Java 2023年5月20日
    00
  • Spring Security学习笔记(一)

    下面是对”Spring Security学习笔记(一)”的详细讲解: 简介 本文主要介绍了Spring Security框架的一些基础知识以及相关概念的解释。包括权限认证、授权、角色、资源等内容。文章采用了markdown格式,图文并茂,易于理解。 Spring Security简介 Spring Security是Spring框架的一个子项目,主要处理基于…

    Java 2023年5月20日
    00
  • vue之proxyTable代理超全面配置流程

    我将为您详细讲解关于“Vue之proxyTable代理超全面配置流程”的完整攻略。 什么是 proxyTable 在 Vue.js 开发中,我们经常需要请求第三方 API 或者后端服务器进行数据交互,但是在本地开发环境中处理跨域问题是一个讨厌的事情。为了避免跨域问题,我们通常会采用在前端页面中调用 API 的方法,而这种方式有一个技巧,那就是通过反向代理,将…

    Java 2023年6月16日
    00
  • java字符流缓冲区详解

    Java字符流缓冲区详解 在Java中,当需要对字符流进行大量读取或写入操作时,使用字符流缓冲区是一种有用的方法。本文将详细介绍Java字符流缓冲区的使用方法。 什么是字符流缓冲? Java字符流缓冲是一个内部缓冲区,用于临时存储从输入流读取的数据或要写入输出流的数据。使用缓冲区可以显著提高读写操作的性能,因为它可以减少对底层I/O的调用次数。 如何使用字符…

    Java 2023年5月27日
    00
  • Tomcat 是如何管理Session的方法示例

    Tomcat 是一个流行的 Java Web 服务器,可以通过 Session 技术实现 Web 应用程序的状态管理。下面我们来详细讲解 Tomcat 是如何管理 Session 的方法示例。 1. 使用 HTTPSession 接口 Tomcat 通过内置的 HTTPSession 接口来管理 Session。若要在应用程序中使用 Session,可以通过…

    Java 2023年5月19日
    00
  • Java Collection集合用法详解

    Java Collection集合用法详解 Java Collection集合框架提供了很多常见数据结构的实现,如数组、链表、树等。本篇文章将介绍Java Collection集合框架的基本用法。 1. Collection Collection是集合框架的根接口,定义了一些通用的方法,如添加、删除、查找元素等。常用的实现类有List、Set等。 1.1 L…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部