首页 > 其他分享 >加密解密工具类

加密解密工具类

时间:2024-09-14 18:28:38浏览次数:9  
标签:AES 加密 String 解密 secretKey Cipher key 工具 cipher


加密解密工具类

package com.example.modules.util;
 
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;  
import javax.crypto.SecretKey;  
import javax.crypto.spec.SecretKeySpec;  
import java.security.SecureRandom;  
import java.util.Base64;  
  
public class EncryptionUtil {  
  
    // DES加密解密  
    public static String desEncrypt(String data, String key) throws Exception {  
        SecretKey secretKey = generateDESKey(key);  
        Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");  
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);  
        byte[] encrypted = cipher.doFinal(data.getBytes());  
        return Base64.getEncoder().encodeToString(encrypted);  
    }  
  
    public static String desDecrypt(String encryptedData, String key) throws Exception {  
        SecretKey secretKey = generateDESKey(key);  
        Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");  
        cipher.init(Cipher.DECRYPT_MODE, secretKey);  
        byte[] original = cipher.doFinal(Base64.getDecoder().decode(encryptedData));  
        return new String(original);  
    }  
  
    private static SecretKey generateDESKey(String key) throws Exception {  
        byte[] keyBytes = key.getBytes();  
        SecretKeySpec keySpec = new SecretKeySpec(keyBytes, 0, 8, "DES");  
        return keySpec;  
    }  
  
    // AES加密解密  
    public static String aesEncrypt(String data, String key) throws Exception {  
        SecretKey secretKey = generateAESKey(key);  
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");  
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);  
        byte[] encrypted = cipher.doFinal(data.getBytes());  
        return Base64.getEncoder().encodeToString(encrypted);  
    }  
  
    public static String aesDecrypt(String encryptedData, String key) throws Exception {  
        SecretKey secretKey = generateAESKey(key);  
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");  
        cipher.init(Cipher.DECRYPT_MODE, secretKey);  
        byte[] original = cipher.doFinal(Base64.getDecoder().decode(encryptedData));  
        return new String(original);  
    }  
  
    private static SecretKey generateAESKey(String key) throws Exception {  
        byte[] keyBytes = key.getBytes();  
        SecretKeySpec keySpec = new SecretKeySpec(keyBytes, 0, 16, "AES");  
        return keySpec;  
    }  
  
    public static void main(String[] args) {  
        try {  
            String originalText = "Hello, World!";  
            String desKey = "12345678"; // DES key must be 8 bytes  
            String aesKey = "1234567890123456"; // AES key must be 16 bytes  
  
            String desEncrypted = desEncrypt(originalText, desKey);  
            String desDecrypted = desDecrypt(desEncrypted, desKey);  
  
            String aesEncrypted = aesEncrypt(originalText, aesKey);  
            String aesDecrypted = aesDecrypt(aesEncrypted, aesKey);  
  
            System.out.println("DES Original: " + originalText);  
            System.out.println("DES Encrypted: " + desEncrypted);  
            System.out.println("DES Decrypted: " + desDecrypted);  
  
            System.out.println("AES Original: " + originalText);  
            System.out.println("AES Encrypted: " + aesEncrypted);  
            System.out.println("AES Decrypted: " + aesDecrypted);  
  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}


标签:AES,加密,String,解密,secretKey,Cipher,key,工具,cipher
From: https://blog.51cto.com/u_15903793/12018148

相关文章

  • 【工具】前端JavaScript代码在线执行器 方便通过网页 手机测试js代码
    【工具】前端JavaScript代码在线执行器方便通过网页手机测试js代码自动补全js代码格式化代码色彩打印日志清空日志待补充<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,ini......
  • YZ系列工具之YZ07:VBA对工作簿事件的监听
    我给VBA下的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套+一部VBA手册,教程分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到数据库,到字典,到高级的网抓及类的应用;手册是为方便编程人员查......
  • capital许可监控工具
    在软件资产日益增长的今天,如何有效管理和监控软件许可,确保合规使用并优化资源,已成为企业面临的重要挑战。Capital许可监控工具,作为一款专业的软件许可监控解决方案,正是为解决这一难题而生。一、Capital许可监控工具的核心价值Capital许可监控工具通过实时追踪和监控软件许可的使......
  • 推荐一个比较好用的工具Microsoft PowerToys
    MicrosoftPowerToys是一组实用工具,可帮助高级用户调整和简化其Windows体验,从而提高工作效率。虽然刚刚使用这个工具不久,但是已经能初步感受到它的强大,接下来我就对于我使用的几个功能进行简单介绍。屏幕截取这个功能在日常工作中应该是经常会用到,在学生时代,使用这个功能......
  • 最新免费AI视频工具!生成6秒视频只需30秒!
    MiniMaxAI目前可免费使用MiniMaxVideo:AiTextToVideo目前版本的HailuoAI可以生成分辨率为1280x720、每秒25帧的六秒视频片段。该模型受限于片段短暂的持续时间,但MiniMax承诺将在未来更新中解决这个问题。HailuoAI的新版本已经在开发中,预计将提供更长的片段持续......
  • 快速创建Map的工具类
    主要是简化代码。importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;/***@authorlyu*@description:*@create2024-09-1416:31*/publicclassMapUtils{privateMapUtils(){thrownewUnsup......
  • MATLAB分布式计算工具箱:高效并行处理指南
    在科学计算和工程模拟中,MATLAB的分布式计算工具箱(ParallelComputingToolbox)和MATLAB分布式计算引擎(MDCE)提供了强大的并行处理能力,使得大规模数据处理和复杂计算任务得以高效解决。本文将详细介绍如何在MATLAB中使用这些工具进行分布式计算。1.分布式计算工具箱和MDCE简......
  • AES加密 & RSA签名
    publicclassMain{publicstaticvoidmain(String[]args)throwsException{//生成RSA密钥对KeyPairGeneratorkeyGen=KeyPairGenerator.getInstance("RSA");keyGen.initialize(1024);KeyPairkeyPair=keyGen.genera......
  • DNSCAT2 是一个开源工具,用于通过 DNS 协议进行隐蔽的网络通信。它最初是由 Tim Wright
    DNSCAT2是一个开源工具,用于通过DNS协议进行隐蔽的网络通信。它最初是由TimWright开发的,目的是利用DNS协议的特点实现隐蔽的数据传输。DNSCAT2的主要用途是帮助安全研究人员测试和评估DNS相关的安全防护措施,尤其是在针对DNS隧道和数据泄露的防御方面。DNSCAT2的工作......
  • 图纸加密软件哪个最好用?七款顶级图纸加密软件大比拼! (2024年图纸设计行业必备)
    在图纸行业,每一份设计图纸都承载着企业的核心竞争力与智慧结晶。图纸一旦泄露,不仅可能导致知识产权的丧失,还可能影响企业的市场竞争力和品牌形象。因此,选择一款高效、可靠的图纸加密软件,对于图纸行业的企业而言,无疑是保护核心资产、确保业务连续性的必备之选。接下来,我们将......