AES加密及解密

2023-11-20

public class AesUtil {

    static {
        Security.addProvider(new BouncyCastleProvider());
    }

    private static final String ALGORITHM = "AES/ECB/PKCS7Padding";

    /**
     * AES加密
     *
     * @param content 需加密的字符串
     * @param key     密钥
     * @return
     */
    public static byte[] encrypt(String content, String key) {
        try {

            Cipher cipher = Cipher.getInstance(ALGORITHM);
            byte[] byteContent = content.getBytes("utf-8");
            cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(Base64Utils.decodeFromString(key), "AES"));
            byte[] result = cipher.doFinal(byteContent);
            return result;

        } catch (NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * AES解密
     *
     * @param content 加密后的字节数组
     * @param key
     * @return 
     */
    public static byte[] decrypt(byte[] content, String key) {
        try {
            SecretKeySpec secretKey = new SecretKeySpec(Base64Utils.decodeFromString(key), "AES");
            Cipher cipher = Cipher.getInstance(ALGORITHM);
            cipher.init(Cipher.DECRYPT_MODE, secretKey);
            byte[] result = cipher.doFinal(content);
            return result;

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        // AES加密
        String crm20190608 = Base64Utils.encodeToString(AesUtil.encrypt("Crm20190608", "lRJKZnfee/7jJbuqGY0U8w=="));
        // AES解密
        String decryptres = new String(decrypt AesUtil.decrypt(Base64Utils.decodeFromString(crm20190608), "lRJKZnfee/7jJbuqGY0U8w=="));
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AES加密及解密 的相关文章

  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • Spring Batch 多线程 - 如何使每个线程读取唯一的记录?

    这个问题在很多论坛上都被问过很多次了 但我没有看到适合我的答案 我正在尝试在我的 Spring Batch 实现中实现多线程步骤 有一个包含 100k 条记录的临时表 想要在 10 个线程中处理它 每个线程的提交间隔为 300 因此在任何时
  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项

随机推荐

  • 大数据开发:Hive DDL操作入门

    Hive针对于数据管理操作 提供了类SQL语言HQL 在Hadoop生态当中 Hive定位为数据仓库工具 对于数据的各种操作 也就是使用HQL来完成 而HQL查询 可以分为DDL和DML两个部分来掌握 今天的大数据开发学习分享 我们就先来讲
  • 【Java8】Guava——Preconditions

    Preconditions Precondition 是先决条件的意思 也叫前置条件 可以人为是使函数正常执行的参数需要满足的条件 Preconditions 这个静态工厂中 Guava 为我们提供了一系列的静态方法 用于帮助我们在函数执行
  • 50+ 可以帮助提高前端开发效率的 ChatGPT Prompts

    大厂技术 高级前端 Node进阶 点击上方 程序员成长指北 关注公众号 回复1 加入高级Node交流群 如果你已经厌倦了繁琐重复的编码日常 想要提升自己的效率 那你可是来对地方了 借助 ChatGPT 的强大能力 你可以简化你的工作流程 减
  • 数据结构与算法-列表(双向链表)设计及其排序算法

    0 概述 本文主要涵盖列表 双向链表 的设计及其排序算法的总结 列表是一种典型的动态存储结构 其中的数据 分散为一系列称作节点 node 的单位 节点之间通过指针相互索引和访问 为了引入新节点或删除原有节点 只需在局部调整少量相关节点之间的
  • VUE项目获取url中的参数

    获取url参数有两种情况 情况一 内部页面之间互相传值 这里先讲情况一 因为同一项目内互相传值比较简单 假如要从A页面跳转到B页面 并传值 就要在A页面这么写 this router push name B query Id this tI
  • webpack5配置解析

    webpack 配置文件 webpack config js entry output loader plugins mode webpack 命令即可打包 entry entry 入口起点 1 string gt src index js
  • 智能家居地址

    http blog yeelink net p 509
  • 神经网络在分类问题中的应用(反向传播算法)

    目录 1 W初始值的设定 2 反向传播算法 反向传播的实例 在其他的一些算法中对于分类问题易出现项数过多 过度拟合的情况 所以这里用一个新的方法来神经网络来解决问题 神经网络可以很好的适用特征空间n很大的情况 用图像来做一些名词解释 在图像
  • 《剑指offer》系列---2

    1 求斐波那契数列的第N项 这个题目很简单 讲递归的书上都是用这个来讲的 但是面试的时候 如果你写个递归 那估计会让人失望的 因为递归的效率真是一个问题 你可以测试一下 输入50 基本上得到结果的时间 够你去喝杯茶了 include
  • 端口开放,ubuntu开放指定端口 包括TCP UDP

    netstat nupl UDP类型的端口 netstat ntpl TCP类型的端口 a 表示所有 n 表示不查询dns t 表示tcp协议 u 表示udp协议 p 表示查询占用的程序 l 表示查询正在监听的程序 在ubuntu下面开放端
  • Echarts出现图表被压缩到很窄的情况的解决方法

    图表被压缩到很窄 可能是因为JSs执行太快 CSS来不及渲染 导致canvas只有默认的宽度 可以使用setTimeout 延迟加载JS
  • SpringSecurity+vue实现前后端分离实现登录注册退出

    前提 需要有springSecurity mybatis plus vue redis等知识 对springSecurity执行流程有点了解 需要代码可评论获取 首先先创建vue项目 创建好之后 下载axios element ui 将其目
  • Sqlilabs Less-26

    判断是单引号字符注入 id 1 当接下来进行操作时会发现很多被注释掉了 查看源码黑名单过滤了很多 or and 空格等等 function blacklist id id preg replace or i id strip out OR
  • 【无标题】记录一次external在vue项目的配置

    module exports publicPath chainWebpack config gt if process env NODE ENV production config plugin webpack bundle analyze
  • 在windows系统下使用IDEA对kafka源码进行编译环境搭建以及配置

    目录 一 前期准备工作 step1 安装JDK1 8 step2 安装zookeeper单机版 step3 安装Gradle 5 4 step4 安装scala 2 11 12 二 将kafka源代码部署到编辑器IDEA并测试 step1
  • java中map的使用,及底层源码

    java util Map public interface Map
  • python运行不显示结果图示_pycharm运行和调试不显示结果的解决方法

    刚在虚拟机里面安装了pycharm 配置 setting 完后 新建一个py文件 键入 hello world 竟然没有结果 虽然运行成功 pycharm太不友好了吧 然后开始找问题 1 有人说是文件名的问题 这个可能有 但是我没有改 我觉
  • CAD 4种反应器

    CAD中4种反应器 按照执行的先后顺序分别为 文档反应器 编辑器反应器 数据库反应器 文档反应器当用户输入命令和命令结束之时 文档反应器函数documentLockModeChanged XXXXX const char pGlobalCm
  • Linux中设置开机启动脚本(fedora)

    rc是runlevel control directory的缩写 大多数的Linux 发行版本中 启动脚本都被放在 etc rc d init d 这些脚本被ln 命令来连接到 etc rc d rcn d 目录 这里的n 就是运行级0 6
  • AES加密及解密

    public class AesUtil static Security addProvider new BouncyCastleProvider private static final String ALGORITHM AES ECB