Springboot集成AES加密 谁践踏了优雅 2023-09-25 17:02 50阅读 0赞 #### Springboot集成AES加密 #### * * 1 : AES加密介绍 * 2 : AES加密模式 * * 2.1 : ECB(Electronic Code Book电子密码本)模式 * 2.2 : CBC(Cipher Block Chaining,加密块链)模式 * 2.3 : CFB(Cipher FeedBack Mode,加密反馈)模式 * 2.4 : OFB(Output FeedBack,输出反馈)模式 * 3 : AES加密工具类 * 4 : 测试截图 * 5 : 相关链接 * 6 : 资源链接 ### 1 : AES加密介绍 ### AES加密算法全称是Advanced Encryption Standard(高级加密标准),是最为常见的对称加密算法之一。 对称/分组密码一般分为: 1、流加密(如OFB、CFB等),需要将分组密码转化为流模式工作。 2、块加密(如ECB、CBC等)。或称分组加密,如果要加密超过块大小的数据,就需要涉及填充和链加密模式。 ### 2 : AES加密模式 ### #### 2.1 : ECB(Electronic Code Book电子密码本)模式 #### ECB模式是最早采用和最简单的模式,它将加密的数据分成若干组,每组的大小跟加密密钥长度相同,然后每组都用相同的密钥进行加密。 优点:1、简单;2:有利于并行计算;3、误差不会被传送; 缺点:1、不能隐藏明文的模式;2、可能对明文进行主动攻击; 因此,此模式适于加密小消息。 #### 2.2 : CBC(Cipher Block Chaining,加密块链)模式 #### 优点:1、不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。 缺点:1、不利于并行计算;2、误差传递;3、需要初始化向量IV #### 2.3 : CFB(Cipher FeedBack Mode,加密反馈)模式 #### 优点:1、隐藏了明文模式;2、分组密码转化为流模式;3、可以及时加密传送小于分组的数据; 缺点:1、不利于并行计算;2、误差传送:一个明文单元损坏影响多个单元;3、唯一的IV; #### 2.4 : OFB(Output FeedBack,输出反馈)模式 #### 优点:1、隐藏了明文模式;2、分组密码转化为流模式;3、可以及时加密传送小于分组的数据; 缺点:1、不利于并行计算;2、对明文的主动攻击是可能的;3、误差传送:一个明文单元损坏影响多个单元; ### 3 : AES加密工具类 ### 采用ECB加密模式 AesUtil.java package com.encrypt.config.utils; import org.apache.commons.codec.digest.DigestUtils; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.security.SecureRandom; /** * AES 加密工具类 */ public class AesUtil { // 加密算法RSA public static final String KEY_ALGORITHM = "AES"; //编码方式 public static final String CODE_TYPE = "UTF-8"; //填充类型 AES/ECB/PKCS5Padding AES/ECB/ISO10126Padding public static final String AES_TYPE = "AES/ECB/PKCS5Padding"; /** * 自定义内容加盐,生成AES秘钥 */ public static String generateAESKey(){ return DigestUtils.md5Hex(getSalt(6)).substring(8, 24); } /** * 随机生成加盐类 */ public static String getSalt(int n){ char[] chars = ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + "1234567890!@#$%^&*()_+").toCharArray(); StringBuilder stringBuilder = new StringBuilder(); SecureRandom random = new SecureRandom(); for(int i = 0; i < n; i++){ stringBuilder.append(chars[random.nextInt(chars.length)]); } return stringBuilder.toString(); } /** * 加密 * @param clearText 明文 * @param aesKey AES秘钥 * @return 加密串 */ public static String encryptAes(String clearText, String aesKey) { try { SecretKeySpec key = new SecretKeySpec(aesKey.getBytes(), KEY_ALGORITHM); Cipher cipher = Cipher.getInstance(AES_TYPE); cipher.init(Cipher.ENCRYPT_MODE, key); byte[] encryptedData = cipher.doFinal(clearText.getBytes(CODE_TYPE)); return new BASE64Encoder().encode(encryptedData); } catch (Exception e) { throw new RuntimeException("加密失败", e); } } /** * 解密 * @param encryptText 密文 * @param aesKey AES秘钥 * @return 解密串 */ public static String decryptAes(String encryptText, String aesKey) { try { byte[] byteMi = new BASE64Decoder().decodeBuffer(encryptText); SecretKeySpec key = new SecretKeySpec(aesKey.getBytes(), KEY_ALGORITHM); Cipher cipher = Cipher.getInstance(AES_TYPE); cipher.init(Cipher.DECRYPT_MODE, key); byte[] decryptedData = cipher.doFinal(byteMi); return new String(decryptedData, CODE_TYPE); } catch (Exception e) { throw new RuntimeException("解密失败", e); } } public static void main(String[] args) { String aesKey = generateAESKey(); String json = "中文,abc,!@#"; //加密 System.out.println("字符串:" + json); String encrypt = encryptAes(json, aesKey); System.out.println("加密后字符串:" + encrypt); //私钥解密 System.out.println("解密后字符串:" + decryptAes(encrypt, aesKey)); } } ### 4 : 测试截图 ### ![在这里插入图片描述][0d1f7c828cf4433681783ede0df08d0d.png] ### 5 : 相关链接 ### Springboot项目报文加密(采用AES、RSA动态加密策略): [https://blog.csdn.net/qq\_38254635/article/details/129275971][https_blog.csdn.net_qq_38254635_article_details_129275971] Springboot集成RSA加密: [https://blog.csdn.net/qq\_38254635/article/details/129623413][https_blog.csdn.net_qq_38254635_article_details_129623413] ### 6 : 资源链接 ### CSDN源项目下载:[https://download.csdn.net/download/qq\_38254635/87587334][https_download.csdn.net_download_qq_38254635_87587334] 百度网盘下载:[https://pan.baidu.com/s/1OZBrTYIuoKmWknIPFvZ8Vw?pwd=nnm8][https_pan.baidu.com_s_1OZBrTYIuoKmWknIPFvZ8Vw_pwd_nnm8] 提取码:nnm8 [0d1f7c828cf4433681783ede0df08d0d.png]: https://img-blog.csdnimg.cn/0d1f7c828cf4433681783ede0df08d0d.png [https_blog.csdn.net_qq_38254635_article_details_129275971]: https://blog.csdn.net/qq_38254635/article/details/129275971 [https_blog.csdn.net_qq_38254635_article_details_129623413]: https://blog.csdn.net/qq_38254635/article/details/129623413 [https_download.csdn.net_download_qq_38254635_87587334]: https://download.csdn.net/download/qq_38254635/87587334 [https_pan.baidu.com_s_1OZBrTYIuoKmWknIPFvZ8Vw_pwd_nnm8]: https://pan.baidu.com/s/1OZBrTYIuoKmWknIPFvZ8Vw?pwd=nnm8
相关 springboot+vue接口加密:RSA+AES 1. 整体预览 整体思想为: > 先使用AES对数据进行加密,再使用RSA对AES密钥进行加密。 至于为什么要使用这种方式呢?总结起来大致就是又安全速度又 ゝ一纸荒年。/ 2024年03月26日 14:41/ 0 赞/ 93 阅读
相关 AES加密 一、AES是什么 AES高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府 我就是我/ 2023年10月03日 17:58/ 0 赞/ 50 阅读
相关 Springboot集成AES加密 Springboot集成AES加密 1 : AES加密介绍 2 : AES加密模式 2.1 : ECB(Electronic 谁践踏了优雅/ 2023年09月25日 17:02/ 0 赞/ 51 阅读
相关 AES 加密 util.encryption = function (params) \{ let \{ data, param, key \} = params const res 悠悠/ 2023年02月18日 03:05/ 0 赞/ 44 阅读
相关 AES 加密 import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.c 秒速五厘米/ 2022年12月29日 15:28/ 0 赞/ 195 阅读
相关 AES加密 package com.test.util.encrypt; import org.apache.commons.lang3.StringUtil 小咪咪/ 2022年07月15日 20:43/ 0 赞/ 261 阅读
相关 AES加密 AES加密是一种对称加密,即加密秘钥与解密秘钥相同 示例如下: public class Aes { //算法 private st 偏执的太偏执、/ 2022年04月14日 05:14/ 0 赞/ 286 阅读
相关 AES加密 import java.io.UnsupportedEncodingException; import java.security.InvalidKeyExce 小灰灰/ 2022年03月09日 14:46/ 0 赞/ 304 阅读
相关 AES加密 AES技术是一种对称的分组加密技术,使用128位分组加密数据,提供比WEP/TKIPS的RC4算法更高的加密强度。AES的加密码表和解密码表是分开的,并且支持子密钥加密,这种 ゞ 浴缸里的玫瑰/ 2022年02月15日 00:09/ 0 赞/ 309 阅读
相关 AES加密 介绍 AES是一种对称加密,使用同一个密钥来加密和解密一段密文 安装 pip install pycryptodome 基础语法 aes 今天药忘吃喽~/ 2021年12月09日 04:49/ 0 赞/ 350 阅读
还没有评论,来说两句吧...