Java使用Cipher.getInstance(“AES/ECB/PKCS5Padding“);加解密算法工具类实现

简介: Java使用Cipher.getInstance(“AES/ECB/PKCS5Padding“);加解密算法工具类实现
Cipher.getInstance("AES/ECB/PKCS5Padding");加解密算法
public class CipherUtils {
 
  /**
   * 密钥算法
   */
  private static final String ALGORITHM = "AES";
  /**
   * 加解密算法/工作模式/填充方式
   */
  private static final String ALGORITHM_STR = "AES/ECB/PKCS5Padding";
 
  /**
   * SecretKeySpec类是KeySpec接口的实现类,用于构建秘密密钥规范
   */
  private SecretKeySpec key;
 
  public CipherUtils(String hexKey) {
    key = new SecretKeySpec(hexKey.getBytes(), ALGORITHM);
  }
 
  /**
   * AES加密
   * 
   * @param data
   * @return
   */
  public String encryptData(String data) {
    try {
      Cipher cipher = Cipher.getInstance(ALGORITHM_STR); // 创建密码器
      cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化
      return new BASE64Encoder().encode(cipher.doFinal(data.getBytes("utf-8")));
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }
  }
 
  /**
   * AES解密
   * 
   * @param data
   * @return
   */
  public String decryptData(String data) {
    try {
      Cipher cipher = Cipher.getInstance(ALGORITHM_STR);
      cipher.init(Cipher.DECRYPT_MODE, key);
      return new String(cipher.doFinal(new BASE64Decoder().decodeBuffer(data)), "utf-8");
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }
  }
 
}
相关文章
|
9月前
|
人工智能 JSON Java
列表结构与树结构转换分析与工具类封装(java版)
本文介绍了将线性列表转换为树形结构的实现方法及工具类封装。核心思路是先获取所有根节点,将其余节点作为子节点,通过递归构建每个根节点的子节点。关键在于节点需包含 `id`、`parentId` 和 `children` 三个属性。文中提供了两种封装方式:一是基于基类 `BaseTree` 的通用工具类,二是使用函数式接口实现更灵活的方式。推荐使用后者,因其避免了继承限制,更具扩展性。代码示例中使用了 Jackson 库进行 JSON 格式化输出,便于结果展示。最后总结指出,理解原理是进一步优化和封装的基础。
288 0
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
852 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
Java
Java 些许公共工具类
Java 些许公共工具类
90 1
|
缓存 前端开发 Java
【前端学java】java基础巩固复习巩固语法练习-工具类的封装(14)
【8月更文挑战第10天】java基础巩固,工具类的封装
99 1
【前端学java】java基础巩固复习巩固语法练习-工具类的封装(14)
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
222 8
|
存储 设计模式 安全
Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类
Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类
476 0
|
设计模式 缓存 安全
Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
113 0
|
设计模式 存储 缓存
Java面试题:结合建造者模式与内存优化,设计一个可扩展的高性能对象创建框架?利用多线程工具类与并发框架,实现一个高并发的分布式任务调度系统?设计一个高性能的实时事件通知系统
Java面试题:结合建造者模式与内存优化,设计一个可扩展的高性能对象创建框架?利用多线程工具类与并发框架,实现一个高并发的分布式任务调度系统?设计一个高性能的实时事件通知系统
230 0
|
设计模式 并行计算 安全
Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
223 0
|
设计模式 安全 NoSQL
Java面试题:结合单例模式与Java内存管理,设计一个线程安全的单例类?分析Java多线程工具类ExecutorService与Java并发工具包中的工具类,设计一个Java并发框架的分布式锁实现
Java面试题:结合单例模式与Java内存管理,设计一个线程安全的单例类?分析Java多线程工具类ExecutorService与Java并发工具包中的工具类,设计一个Java并发框架的分布式锁实现
209 0