AES加密工具类(java)

简介: AES加密工具类(java)

工具类

 
import cn.hutool.core.util.HexUtil;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
 
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
 
 
@Slf4j
public class AESTool {
    //秘钥设置16位
    private static final String SECRET_KEY = "Snch9xeabPPurxE0";
    //加密方式
    private static final String AES_TYPE = "AES";
    //秘钥最大长度16位
    private static final int BYTE_LENGTH = 16;
 
    /**
     * 加密AES
     *
     * @param value 字符串
     * @param key   秘钥
     * @return String
     */
    private static String encryptAES(String key, String value) {
        try {
            byte[] keyBytes = Arrays.copyOf(key.getBytes(StandardCharsets.US_ASCII), BYTE_LENGTH);
            SecretKey keyStr = new SecretKeySpec(keyBytes, AES_TYPE);
            Cipher cipher = Cipher.getInstance(AES_TYPE);
            cipher.init(Cipher.ENCRYPT_MODE, keyStr);
            byte[] cleartext = value.getBytes(StandardCharsets.UTF_8);
            byte[] ciphertextBytes = cipher.doFinal(cleartext);
            return new String(HexUtil.encodeHex(ciphertextBytes)).toUpperCase();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return null;
    }
 
    public static String encrypt( String value) {
      return   encryptAES(SECRET_KEY,value);
    }
 
    /**
     * 解密AES
     *
     * @param encrypted 字符串
     * @param key       秘钥
     * @return String
     */
    public static String decryptAES(String key, String encrypted) {
        try {
            byte[] keyBytes = Arrays.copyOf(key.getBytes(StandardCharsets.US_ASCII), BYTE_LENGTH);
            SecretKey keyStr = new SecretKeySpec(keyBytes, AES_TYPE);
            Cipher cipher = Cipher.getInstance(AES_TYPE);
            cipher.init(Cipher.DECRYPT_MODE, keyStr);
            byte[] content = HexUtil.decodeHex(encrypted.toCharArray());
            byte[] ciphertextBytes = cipher.doFinal(content);
            return new String(ciphertextBytes);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return null;
    }
    public static String decrypt(String encrypted) {
 
        return decryptAES(SECRET_KEY,encrypted);
    }
    /**
     * 加密
     *
     * @param value 字符串
     * @param pwd   秘钥
     * @return String
     */
    public static String encryptValue(String value, String pwd) {
        return StrUtil.isEmpty(value) ? null : encryptAES(pwd, value.trim());
    }
 
    /**
     * 解密
     *
     * @param value 字符串
     * @param pwd   秘钥
     * @return String
     */
    public static String decryptValue(String value, String pwd) {
        if (StrUtil.isNotEmpty(value)) {
            String value2 = decryptAES(pwd, value.toLowerCase());
            value = StrUtil.isEmpty(value2) ? value : value2;
        }
        return value;
    }
 
    public static void main(String[] args) {
        System.out.println(decrypt("58F2743E93CBFE5D73B3DA911858D1DC"));
    }
}

测试

abv131313123
目录
相关文章
|
3天前
|
Java
JAVA工具类匹配重复或者连续的字符和符号
JAVA工具类匹配重复或者连续的字符和符号
8 2
|
3天前
|
存储 算法 安全
Java中的DES和3DES加密算法详解
Java中的DES和3DES加密算法详解
|
1天前
|
算法 Java 数据处理
Java中MD5加密算法的实现
Java中MD5加密算法的实现
|
3天前
|
Java BI C#
技术笔记:SM4加密算法实现Java和C#相互加密解密
技术笔记:SM4加密算法实现Java和C#相互加密解密
|
3天前
|
XML 安全 Java
一篇文章讲明白JAVA常用的工具类
一篇文章讲明白JAVA常用的工具类
|
3天前
|
算法 安全 Java
技术经验分享:JavaSecurity:Java加密框架(JCA)简要说明
技术经验分享:JavaSecurity:Java加密框架(JCA)简要说明
|
1天前
|
SQL 安全 网络安全
网络防线的守护者:探索加密技术与安全意识在现代网络安全中的角色
【6月更文挑战第28天】在数字时代的浪潮下,网络安全已成为保护个人隐私和企业资产的重要屏障。本文深入探讨了网络安全漏洞的成因,分析了加密技术如何成为防御策略的关键一环,并强调了提升公众安全意识的必要性。通过揭示网络攻击的常见模式、评估现有加密方法的有效性以及提出培养安全习惯的途径,文章旨在为读者提供一套综合性的网络防护知识体系,以期在日益复杂的网络环境中筑牢安全的防线。
12 4
|
3天前
|
安全 Java 网络安全
网络安全与信息安全:漏洞、加密技术与安全意识的三重奏
在数字时代的交响乐中,网络安全和信息安全扮演着至关重要的角色。本文将深入探讨网络安全的脆弱性,包括常见漏洞及其潜在威胁;阐述加密技术如何作为数据保护的坚固盾牌,以及它在现代通信中的应用;强调培养安全意识的必要性,并分享提升个人和组织安全防御能力的策略。通过结合最新的研究成果和实际案例分析,本文旨在为读者提供一场关于网络空间安全的全面剖析,揭示保护我们数字生活的关键要素。
|
1天前
|
存储 安全 网络安全
网络安全的盾牌与矛:漏洞、加密技术与安全意识的博弈
在数字化时代的浪潮中,网络安全成为维护信息完整性和隐私权的前沿战场。本文旨在探讨网络安全的三大支柱:网络漏洞、加密技术和用户安全意识。通过分析最新的统计数据和研究结果,揭示网络攻击的演变趋势,评估当前加密技术的有效性,并讨论提升公众安全意识的策略。结合具体案例,本文将提供对现代网络防御机制的深入理解和对未来发展方向的预测。
|
1天前
|
监控 安全 网络安全
网络安全与信息安全:漏洞、加密技术与安全意识的交汇
在数字化时代,网络安全和信息安全的重要性愈发凸显。本文深入探讨了网络安全漏洞的识别与防范、加密技术的应用与发展以及提升个人和企业的安全意识。通过分析最新的研究数据和案例,文章揭示了网络威胁的复杂性,并提供了实用的防护策略和建议,旨在增强读者对网络安全挑战的认识,并鼓励采取积极措施以保护数字资产。
7 1