首页 > 其他分享 >AES常用的代码示例

AES常用的代码示例

时间:2024-08-19 23:27:21浏览次数:13  
标签:AES 加密 String 示例 代码 解密 key password

AES

AES是 对称加密。

对称加密是指加密和解密使用相同的密钥的加密算法。

非对称加密是指加密和解密使用不同的密钥的加密算法。

AES加密解密

  • 加密模式,有 ECB模式 和 CBC 模式等等,ECB 不需要 iv偏移量,而CBC需要。

  • 密钥,可以自定义。

  • 填充方式,有 PKCS5 、PKCS7、NoPadding 。。

  • 输出格式,可以有 16进制的 Hex ,或者是 Base64。

在线加密解密的网站:

https://tool.hiofd.com/aes-encrypt-online/

如果不确定,可以使用 在线加密解密的网站,判断是哪一种模式。

Hutool依赖:

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.6</version>
</dependency>

Hutool 的 AES:

Hutool 的 AES, 默认加密方式为ECB ,默认的填充方式为 PKCS5。

加密,生成16进制的 Hex字符串:

    /**
     * 加密。生成16进制格式的 Hex
     *
     */
    public static String encryptHex(String password, String key) {

        byte[] keyBytes = key.getBytes();
        // 构建
        SymmetricCrypto symmetricCrypto = new SymmetricCrypto(SymmetricAlgorithm.AES, keyBytes);
        // 加密,生成16进制格式
        return symmetricCrypto.encryptHex(password);
    }

解密,根据16进制的Hex解密:

    /**
     * 解密。根据16进制的Hex解密
     */
    public static String decryptStr(String password, String key) {
        SymmetricCrypto symmetricCrypto = new SymmetricCrypto(SymmetricAlgorithm.AES, key.getBytes());
        password = symmetricCrypto.decryptStr(password);
        return password;
    }

AES加密解密,16进制的 Hex 示例:

        String password = "";
        String key = "自定义key";

        String encryptHexPassword = encryptHex(password, key);
        System.out.println("加密:" + encryptHexPassword);

        String decryptStr = decryptStr(encryptHexPassword, key);
        System.out.println("解密:" + decryptStr);

加密,输出 base64编码的字符串。

    /**
     * 加密,输出 base64编码的字符串。
     *
     */
    public static String encryptBase64(String password, String key) {

        byte[] keyBytes = key.getBytes();
        // 构建
        SymmetricCrypto symmetricCrypto = new SymmetricCrypto(SymmetricAlgorithm.AES, keyBytes);
        // 加密
        byte[] encrypt = symmetricCrypto.encrypt(password);
        //使用BASE64对加密后的二进制数组进行编码
        return Base64.getEncoder().encodeToString(encrypt);

    }

解密,使用 base64编码的字符串解密

    /**
     * 解密,使用 base64编码的字符串解密。
     *
     */
    public static String decryptBase64(String password, String key) {
        SymmetricCrypto symmetricCrypto = new SymmetricCrypto(SymmetricAlgorithm.AES, key.getBytes());
        byte[] decrypt = symmetricCrypto.decrypt(password);
        return new String(decrypt);
    }

AES加密解密,使用Base64示例:

        String encryptHexPassword = encryptBase64(password, key);
        System.out.println("加密:" + encryptHexPassword);

        String decryptBase64 = decryptBase64(encryptHexPassword, key);
        System.out.println("解密:" + decryptBase64);

标签:AES,加密,String,示例,代码,解密,key,password
From: https://www.cnblogs.com/expiator/p/18368342

相关文章

  • 【LGR-196-Div.4】洛谷入门赛 #26 题A - H 详细题解--优化思路简洁代码(C++,Python语
    前言:    觉得这个比赛很有意思的,都是暴力题,涉及一些细节,难度比较适合刚学编程语言的,可以很好的锻炼基础还有手速,最后两题也是比较有意思,之后也准备更新atc的比赛题解和洛谷的一些高质量比赛题解(算法网瘾就是想参加各种比赛)   如果觉得有帮助,或者觉得我写的好,......
  • 生产者消费者问题-C++代码实现
    生产者消费者问题C++代码本文主要记录面试中手撕代码环节比较经常考察的生产者消费者问题,方便后续巩固和查看#include<iostream>#include<thread>#include<mutex>#include<condition_variable>#include<queue>#include<functional>usingnamespacestd;classProd......
  • yolov8双目测距(包含有前端的源码和无前端的源码Sgbm双目测距算法)-内含测距代码,视差图
    YOLOv8:YOLOv8是一个目标检测模型,它是YOLO(YouOnlyLookOnce)系列的一部分,用于实时物体检测。YOLOv8能够快速准确地检测视频或图像中的对象。双目测距:双目测距是指使用两个摄像头(或一个立体相机)从不同角度拍摄同一场景,通过比较两个摄像头捕捉到的图像差异来计算物体的距......
  • YOLOV5单目测距+车辆检测+车道线检测+行人检测(教程-代码)
     YOLOv5是一种高效的目标检测算法,结合其在单目测距、车辆检测、车道线检测和行人检测等领域的应用,可以实现多个重要任务的精确识别和定位。首先,YOLOv5可以用于单目测距。通过分析图像中的目标位置和尺寸信息,结合相机参数和几何关系,可以推断出目标与相机之间的距离。这对于......
  • C/C++语言基础--指针三大专题详解2(指针与数组关系,动态内存分配,代码均可)
    本专栏目的更新C/C++的基础语法,包括C++的一些新特性前言指针是C/C++的灵魂,和内存地址相关联,运行的时候速度快,但是同时也有很多细节和规范要注意的,毕竟内存泄漏是很恐怖的指针打算分三篇文章进行讲解,本专题是二,介绍了指针和数组的关系、动态内存如何分配和释放等问题专题......
  • RabbitMQ消息队列:概念、单节点和集群示例
    目录消息队列概念主流的消息队列消息队列名词(1)Broker(2)Topic(3)Producer(4)Consumer(5)Queue(6)Message消息队列中两种工作模式Point-to-Point(PTP、点到点)Pub/Sub消息队列的缺点系统可用性降低系统复杂性提高数据一致性无法保证RabbitMQ相关术语(1)生产者(2)消费者(3)队......
  • 「代码随想录算法训练营」第四十一天 | 单调栈 part1
    739.每日温度题目链接:https://leetcode.cn/problems/daily-temperatures/文章讲解:https://programmercarl.com/0739.每日温度.html题目难度:中等视频讲解:https://www.bilibili.com/video/BV1my4y1Z7jj/题目状态:看题解思路:定义一个单调栈,该栈存放下标,规则是要保持其下标对......
  • 通过代码添加的控件的事件如何编写?
    0背景这两天在重新复习事件,比如Winform控件的事件,利用vs很方便地实现。比如:想要在窗体加载时,修改窗口的标题;我们只需要双击Form1的标题栏即可;vs便会给我们生成如下代码,且光标自动定位到方法体中:privatevoidForm1_Load(objectsender,EventArgse){}然后我......
  • 经典记忆卡片游戏html代码
    记忆卡片游戏是一款简单而富有挑战性的经典游戏,旨在锻炼玩家的记忆力和观察力。游戏通常由一组图案相同的卡片组成,玩家需要通过翻转卡片找到匹配的对。每当找到一对匹配的卡片时,玩家将获得一定的分数或奖励,游戏结束时,分数最高者获胜。无论是与朋友竞技,还是单独训练,这款游戏都适合......
  • axios取消请求CancelToken的原理解析及用法示例
    文章目录一、axios的实例与请求流程二、CancelToken的作用三、CancelToken的实现原理四、取消请求的流程五、CancelToken用法六、利用拦截器取消请求1、axios请求拦截器2、axios响应拦截器3、利用路由导航守卫取消请求一、axios的实例与请求流程下图是axios实例......