当前位置: 首页 > news >正文

AES加解密工具类

文章目录

  • 前言
  • 一、AES加解密工具类
  • 总结

前言

  • 当涉及到数据的安全性和保密性时,加密是一种关键的技术手段。AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,被认为是目前最安全和最常用的加密算法之一。

一、AES加解密工具类

package org.springblade.modules.data.util;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;/*** AES 加解密工具** @author kk*/
public class AESUtil {static Logger logger = LoggerFactory.getLogger(AESUtil.class);// 密钥public static String key = "00B1E5452B9D453EC109D9B656150AF2";private static String charset = "utf-8";// 加密器类型:加密算法为AES,加密模式为CBC,补码方式为PKCS5Paddingprivate static String transformation = "AES/ECB/PKCS5Padding";// 算法类型:用于指定生成AES的密钥private static String algorithm = "AES";/*** 加密*/public static String encrypt(String content) {return encrypt(content, key);}/*** 解密*/public static String decrypt(String content) {return decrypt(content, key);}/*** 加密** @param content 需要加密的内容* @param key     加密密码* @return*/public static String encrypt(String content, String key) {try {//构造密钥SecretKeySpec skey = new SecretKeySpec(key.getBytes(), algorithm);//创建AES加密器Cipher cipher = Cipher.getInstance(transformation);byte[] byteContent = content.getBytes(charset);//使用加密器的加密模式cipher.init(Cipher.ENCRYPT_MODE, skey);// 加密byte[] result = cipher.doFinal(byteContent);//使用BASE64对加密后的二进制数组进行编码
//            return new String(new Base64().encode(result));return Base64.getEncoder().encodeToString(result);} catch (Exception e) {e.printStackTrace();logger.info("{}", e);}return null;}/*** AES解密** @param content 待解密内容* @param key     解密密钥* @return 解密之后* @throws Exception*/public static String decrypt(String content, String key) {try {SecretKeySpec skey = new SecretKeySpec(key.getBytes(), algorithm);Cipher cipher = Cipher.getInstance(transformation);//解密时使用加密器的解密模式cipher.init(Cipher.DECRYPT_MODE, skey);// 初始化byte[] result = cipher.doFinal(Base64.getMimeDecoder().decode(content));return new String(result); // 解密} catch (Exception e) {e.printStackTrace();logger.info("{}", e);}return null;}public static void main(String[] args) {
//        String s = "{\"username\":\"aqgc\",\"password\":\"V@654321\"}";String s = "京A55645";
//        String encryptResultStr = encrypt(s, "kcc1YgEJZ%NLc%kY");String encryptResultStr = encrypt(s);// 加密System.out.println("加密前:" + s);System.out.println("加密后:" + encryptResultStr);// 解密System.out.println("解密后:" + decrypt(encryptResultStr));String base64Encode = Base64.getEncoder().encodeToString(s.getBytes());System.out.println("base64加密后:" + base64Encode);System.out.println("base64解密后:" + new String(Base64.getDecoder().decode(base64Encode)));}
}

总结

如果此篇文章有帮助到您, 希望打大佬们能关注点赞收藏评论支持一波,非常感谢大家!
如果有不对的地方请指正!!!

参考1

http://www.lryc.cn/news/375722.html

相关文章:

  • Http协议JSON格式
  • 【算法与设计】期末总结
  • odoo报错KeyError: ‘ir.http‘
  • 每日的影视作品推荐❗❗
  • css 文字下划线 text-decoration
  • Java-01-基础篇-04 Java集合-04-HashMap (源码)
  • 开源语音合成模型ChatTTS本地部署结合内网穿透实现远程访问
  • 超多细节—app图标拖动排序实现详解
  • 基于深度学习的文字识别
  • Pikachu靶场--文件包含
  • get put post delete 区别以及幂等
  • ultralytics版本及对应的更新
  • 在现代编程环境中,Perl 如何与其他流行语言(如 Python、Java 等)进行集成和协作?
  • BEV 中 multi-frame fusion 多侦融合(一)
  • “Docker操作案例实践“
  • Redis 管道
  • ubuntu20.04安装配置openMVG+openMVS
  • 使用CSS常见问题解答卡片
  • Kong AI Gateway 正式 GA !
  • HTML5有哪些新特性?
  • SQL Server入门-SSMS简单使用(2008R2版)-2
  • php实现modbus CRC校验
  • 2025年计算机毕业设计题目参考
  • ERP、CRM、SRM、PLM、HRM、OA……都是啥意思?
  • Jmeter分布式、测试报告、并发数计算、插件添加方式、常用图表
  • 3D三维模型展示上传VR全景创建H5开源版开发
  • js中!emailPattern.test(email) 的test是什么意思
  • 半监督医学图像分割:基于对抗一致性学习和动态卷积网络的方法| 文献速递-深度学习结合医疗影像疾病诊断与病灶分割
  • Scikit-Learn支持向量机回归
  • ElasticSearch的桶聚合