AES加密解密:Java代码完整示例

悠悠 2024-03-26 16:37 145阅读 0赞

目录

一、AES算法简述

二、具体Java代码AES算法加解密实现Demo:

三、pom依赖引入:


一、AES算法简述

密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。AES 或高级加密标准是一种对称密钥加密算法,最初由两位比利时密码学家 Joan Daemen 和 Vincent Rijmen 开发。这个标准用来替代原先的DES(Data Encryption Standard),已经被多方分析且广为全世界所使用。

AES具体步骤主要分为密钥扩展、字节代换、行移位、列混合、和轮密钥加。

大致流程如下:

543cc2e0470741469f20c9444543f800.png

二、具体Java代码AES算法加解密实现Demo:

  1. package org.example;
  2. import org.apache.commons.codec.binary.Base64;
  3. import javax.crypto.Cipher;
  4. import javax.crypto.spec.SecretKeySpec;
  5. import java.nio.charset.StandardCharsets;
  6. public class AESUtils {
  7. public static void main(String[] args) {
  8. String context = "待加密内容";
  9. System.out.println(encryptDes(context));
  10. String contextSectrect = "====密文====";
  11. System.out.println(decryptDES(contextSectrect));
  12. }
  13. /**
  14. *加密/解密-工作模式-填充模式
  15. */
  16. private static final String transformation = "DES/ECB/PKCS5Padding";
  17. /**
  18. * 密钥算法
  19. */
  20. private static final String algorithm = "DES";
  21. /**
  22. * 偏移变量
  23. */
  24. private static final String key = "1234";
  25. /**
  26. * 使用DES加密数据
  27. * @param input: 待加密内容
  28. */
  29. public static String encryptDes(String input) {
  30. try {
  31. //取加密对象
  32. Cipher cipher = Cipher.getInstance(transformation);
  33. //加密规则
  34. SecretKeySpec sec = new SecretKeySpec(key.getBytes(), algorithm);
  35. //初始化加密模式
  36. cipher.init(Cipher.ENCRYPT_MODE, sec);
  37. //加密
  38. byte[] bytes = cipher.doFinal(input.getBytes(StandardCharsets.UTF_8));
  39. //输出加密后数据
  40. return Base64.encodeBase64URLSafeString(bytes);
  41. } catch (Exception e) {
  42. System.out.println("加密失败");
  43. return null;
  44. }
  45. }
  46. /**
  47. * DES解密
  48. * @param input: 密文
  49. * @return: 原文
  50. */
  51. public static String decryptDES(String input) {
  52. try {
  53. //取Cipher对象
  54. Cipher cipher = Cipher.getInstance(transformation);
  55. //密钥规则
  56. SecretKeySpec sec = new SecretKeySpec(key.getBytes(), algorithm);
  57. cipher.init(Cipher.DECRYPT_MODE, sec);
  58. //解密
  59. byte[] bytes = cipher.doFinal(Base64.decodeBase64(input));
  60. //明文,直接返回
  61. return new String(bytes, StandardCharsets.UTF_8);
  62. } catch (Exception e) {
  63. System.out.println("解密失败");
  64. return null;
  65. }
  66. }
  67. }

三、pom依赖引入:

  1. <dependency>
  2. <groupId>commons-codec</groupId>
  3. <artifactId>commons-codec</artifactId>
  4. <version>1.10</version>
  5. </dependency>

发表评论

表情:
评论列表 (有 0 条评论,145人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JAVA-对称加密AES解密示例

    这几天在解决报文中敏感字段传输问题时,由于对AES对称加密不熟悉,遇到了不少问题。特此记录,多的不说,直接上代码!代码中做了向量的异或(generateIv),如无特殊需要,可

    相关 C# AES 加密解密示例

    AES 是一种对称加密算法。 相对非对称加密,对称加密解密过程速度更快, 适合大数据流实时加密解密。AES 被广泛应用于金融,政府等领域的网络传输。在这里分享一段用 .Net

    相关 AES加密解密代码

    在做公司项目时,提到要有安全整改,例如需要将保存到sharedPreference中的密码等敏感信息,进行加密保存。 在网上查找了关于AES的一些加密解密方法,但有些