java 实现 AES 加解密

chatgpt/2023/9/27 16:50:12
package com.dechnic.tfoms.util;import org.apache.shiro.crypto.hash.Sha256Hash;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;/*** @ desc:* @ Author:  houqida* @ Date  :  2023/6/28*/
public class EncryptUtil {private static final Logger logger = LoggerFactory.getLogger(EncryptUtil.class);public static String decryptAes(String sSrc,String sKey){try {if (sKey == null) {logger.info("Key为空null");return "";}if (sKey.length() != 16) {logger.info("Key长度不是16位");return "";}byte[] raw = sKey.getBytes("utf-8");SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");cipher.init(Cipher.DECRYPT_MODE, skeySpec);byte[] encrypted1 = new BASE64Decoder().decodeBuffer(sSrc);try {byte[] original = cipher.doFinal(encrypted1);String originalString = new String(original,"utf-8");return originalString;} catch (Exception e) {logger.error("密码解密出错",e);return null;}}catch(Exception e){e.printStackTrace();}return null;}public static String encryptAes(String sSrc,String sKey){if (sKey == null) {logger.info("Key为空null");return "";}if (sKey.length() != 16) {logger.info("Key长度不是16位");return "";}try {byte[] raw = sKey.getBytes("utf-8");SecretKeySpec skeySpec = new SecretKeySpec(raw,"AES");Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE,skeySpec);byte[] bytes = cipher.doFinal(sSrc.getBytes(StandardCharsets.UTF_8));return new BASE64Encoder().encode(bytes);} catch (UnsupportedEncodingException | NoSuchAlgorithmException | NoSuchPaddingException e) {e.printStackTrace();} catch (InvalidKeyException e) {e.printStackTrace();} catch (IllegalBlockSizeException e) {e.printStackTrace();} catch (BadPaddingException e) {e.printStackTrace();}return null;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5312928.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

Java开发工具MyEclipse发布v2023.1.2,今年第二个修复版!

MyEclipse一次性提供了巨量的Eclipse插件库,无需学习任何新的开发语言和工具,便可在一体化的IDE下进行Java EE、Web和PhoneGap移动应用的开发;强大的智能代码补齐功能,让企业开发化繁为简。 MyEclipse v2023.1.2官方正式版下载 …

单行|多行 文本溢出省略一次说清楚

简介 项目中有时需要将单行文本溢出隐藏,有时需要将多行文本进行隐藏,使用省略号将他们代替,那么这些都则怎么实现呢? 单行文本溢出隐藏 white-space:nowrap;//文本不换行 overflow: hidden;//溢出隐藏 text-overflow: ellipsis;…

UniPro助力金融企业数字化转型 强化项目协作与跟踪

根据一份来自Standish Group的研究报告("CHAOS Report"),该报告对美国各行业的项目进行了调查,结果显示仅有不到一半(约44%)的项目能够成功按时完成,并达到预期的业务目标。其中&…

Hadoop学习指南:探索大数据时代的重要组成——运行环境搭建

Hadoop运行环境搭建(开发重点) 模板虚拟机环境准备 数据来源层 安装模板虚拟机,IP地址192.168.10.100、主机名称hadoop100、内存4G、硬盘50G hadoop100 虚拟机配置要求如下(本文Linux系统全部以CentOS-7.5-x86-1804为例&#…

RPC与REST有什么区别?

原文:RPC与REST有什么区别? 背景 好多开发的同学在工作中,经常分不清RPC和REST的区别,导致经常沟通不在一个层次上。甚至有些同学把这两个当成同一个东西。 RPC与REST的区别? 对比名称 rpc rest 备注 架构风格 RP…

使用Spring Boot AOP实现日志记录

目录 介绍 1.1 什么是AOP 1.2 AOP体系与概念 AOP简单实现 2.1 新建一个SpringBoot项目,无需选择依赖 2.2 设置好本地Maven配置后,在pom.xml文件里添加添加maven依赖 2.3 创建一个业务类接口 2.4 在实体类实现接口业务 2.5 在单元测试运行结果 …

Spring依赖注入和ioc在spring中的实现方式

目录 一、依赖注入 1.IOC思想 2.什么是依赖注入? 3.实例化对象中有pojo类型属性 二、IOC在Spring中的实现方式 1.获取bean的三种方式 1.1根据bean的id获取 1.2根据bean的类型获取(最常用,因为在IOC容器中,一个类型的bean只…

SpringBoot-Run启动流程

SpringBoot-Run启动流程 1. 引言 在现代的Java开发中,Spring Boot已经成为了一种非常流行的框架,它能够帮助开发者快速构建和部署应用程序。本篇博客将深入探讨Spring Boot的启动流程,并分析其源码实现细节。 2. Spring Boot简介 Spring …
推荐文章