关于AES 和 BASE64 的理解

BASE64

首先 base64 是一种编码方式,它的字符集由64个不同字符组成(A-Z、a-z、0-9和两个额外字符+/),因此每个Base64字符都占用6个比特(2^6 = 64)

Base64编码后的数据长度 = 4 * ceil(原始数据长度 / 3)

其中,ceil() 是向上取整的函数。请注意,如果原始数据的长度恰好是3的倍数,则不会添加填充字符 “=”,而编码后的数据长度将与原始数据长度成正比,约为4/3倍。

AES

AES(Advanced Encryption Standard)是一种对称加密算法,它是目前广泛使用的加密标准之一。AES加密算法使用相同的密钥(称为对称密钥)进行加密和解密操作,因此必须确保密钥的安全性。AES支持多种加密模式,这些模式决定了如何处理数据块并进行加密。

以下是一些常见的AES加密模式:

ECB(Electronic Codebook)模式:
ECB是最简单的AES加密模式。它将明文分成大小相等的数据块,然后对每个数据块单独进行加密。但是,ECB模式存在一些问题,因为相同的明文块会被加密成相同的密文块,这导致了一些安全性问题,例如可能泄漏信息模式和无法抵抗攻击者的重新排序攻击。

  • CBC(Cipher Block Chaining)模式:
    CBC模式解决了ECB模式的一些问题。在CBC模式中,每个数据块在加密前会与前一个密文块进行异或运算,然后再进行加密。这样做使得每个数据块的加密都依赖于前一个数据块,增加了密码算法的随机性。加密时,需要一个初始向量(IV)来作为第一个数据块的前一个密文块。为了保证安全性,IV应该是随机的且每次加密时都不同。
  • CFB(Cipher Feedback)模式:
    CFB模式将AES作为一个自反馈的流密码来使用,允许单个字节的加密和解密。类似于CBC,它使用初始向量(IV)来启动过程,但之后每个数据块的密文将反馈回加密算法以产生新的密文。
  • OFB(Output Feedback)模式:
  • OFB模式将AES作为一个自反馈的流密码来使用,类似于CFB。OFB模式使用初始向量(IV)来启动过程,然后使用AES算法的输出作为流密码,而不是使用密文反馈。
  • CTR(Counter)模式:
    CTR模式将AES用作计数器模式的流密码。它使用一个初始向量(IV)和一个计数器值,然后将IV和计数器值组合起来,加密后得到密钥流,再将密钥流和明文数据进行异或运算得到密文。

AES 的密钥支持 128、192、256位。

在这里插入图片描述
所以对于密钥要进行 base64 加密的话,最大长度不能超过32 个字符,32 个字符刚好是 256 位,超过就会报错如下

如果尝试在 Java
中使用超过256位的AES密钥,通常会抛出java.security.InvalidKeyException异常。这是因为Java标准库中的AES实现对于密钥长度有一定的限制,不支持超过256位的密钥

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/41640.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue做移动端上拉加载 删除当前列表某个数据 保持当前状态 继续获取下一页不影响正常的数据

本文中使用vant组件的list列表制作的 当然主要是看这个难题的思路 不必计较用的什么组件库 换做其他的组件库 思路还是一样的 //主要思路是把点击删除的数据让后端置为false // 比如我请求了3页,一页10条数据 // 一共30条,我一条一条删除,点…

Redis : zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录

In file included from adlist.c:34:0: zmalloc.h:50:31: 致命错误&#xff1a;jemalloc/jemalloc.h&#xff1a;没有那个文件或目录 #include <jemalloc/jemalloc.h> 解决 : 如上图使用命令 make MALLOClibc

【EXCEL】数据录入的快捷键和正确格式

目录 0.环境 1.内容概述 2.具体内容 2.1数据录入换行换列的快捷键&#xff08;标准的数据输入方式&#xff09; 2.2日期的正确格式和使用&#xff08;标准日期格式与长日期&#xff09; 2.2.1 标准日期 2.2.2 长日期 2.2.3 显示当前日期和时间的快捷键 2.3百分比的正确…

FPGA adrv9002 4收4发板卡,支持NVME SATA EMMC 光口 FMC

板卡采用ADI 射频直采芯片ADRV9002 &#xff0c;支持4收4发支持外部本振 跳频 同时支持4X 10G光口对外传输&#xff0c;FMC扩展 。同时支持4X NVME接口&#xff0c;可以实时流盘&#xff0c;备份一路SAT A接口&#xff0c;板卡同时预留了EMMC&#xff0c;可以PS PL选通访问&…

C++ stack和queue 模拟实现

stack和queue 模拟实现 模拟栈实现模拟队实现 模拟栈实现 1 栈是一种容器适配器&#xff0c;专门设计用于后进先出的后进先出环境&#xff0c;在这种环境中&#xff0c;元素只从容器的一端插入和提取。 2 栈是作为容器适配器实现的&#xff0c;这些适配器是使用特定容器类的封装…

linux安装git

linux安装git 命令行安装方法下载安装配置git用户信息 命令行安装方法 Debian/Ubuntu&#xff1a;使用apt命令进行安装 sudo apt install git但是我安装遇到问题&#xff1a; 这是应为之前安装了搜狗拼音的原因&#xff0c;卸载即可 apt-get autoremove sogoupinyinapt-get …

23.JavaWeb-集群+Nginx+JMeter

1.集群概念 平时用的服务是的并发量是有限的&#xff0c;像tomcat只有不到500的并发量&#xff0c;不能满足高并发的需求&#xff0c;因此就采用了集群的方法&#xff0c;用多个服务器 当用户请求集群系统时&#xff0c;集群给用户的感觉就是一个单一独立的服务器&#xff0c;而…

基于SpringBoot+vue的民宿管理平台系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

JS-26 认识防抖和节流函数;自定义防抖、节流函数;自定义深拷贝、事件总线函数

目录 1_防抖和节流1.1_认识防抖和节流函数1.2_认识防抖debounce函数1.3_防抖函数的案例1.4_认识节流throttle函数 2_Underscore实现防抖和节流2.1_Underscore实现防抖和节流2.2_自定义防抖函数2.3_自定义节流函数 3_自定义深拷贝函数4_自定义事件总线 1_防抖和节流 1.1_认识防…

Failed to initialize NVML: Driver/library version mismatch (解决)

问题描述 运行nvidia-smi报错&#xff1a; Failed to initialize NVML: Driver/library version mismatch解决方法 只需一步&#xff1a;下载一个安装包&#xff0c;运行一个命令来重新安装cuda driver和cuda toolkit&#xff08;在一个包里&#xff09;。 到这里&#xff1…

听GPT 讲K8s源代码--pkg(六)

pkg/kubelet/cm 目录是 Kubernetes 源代码中的一个目录&#xff0c;包含了 kubelet 组件中的 ConfigMap 相关代码。 在 Kubernetes 中&#xff0c;ConfigMap 是一种用于存储非机密数据的 API 对象类型&#xff0c;它可以用来存储配置信息、环境变量、命令行参数等等。 kubelet …

学堂在线数据结构(上)(2023春)邓俊辉 课后题

The reverse number of a sequence is defined as the total number of reversed pairs in the sequence, and the total number of element comparisons performed by the insertion sort in the list of size n is: 一个序列的逆序数定义为该序列中的逆序对总数&#xff0c;…

OKCC呼叫中心的坐席监控功能有什么

最近很多客户都在跟我谈他们企业的电话客服工作量都非常大&#xff0c;虽然客服人员在服务时应该态度谦和&#xff0c;但是遇到难缠的客户&#xff0c;客服人员总有脾气忍不住的时候&#xff0c;言语上会带有情绪&#xff0c;这些客服人员会因为服务水平欠佳让客户不满意从而产…

【Elemnt-UI——el-popover点击出现多个弹框】

效果图 解决 :append-to-body"false"添加这个属性就可以了 <el-popoverv-model"item.contextmenuVisible"placement"bottom-end":append-to-body"false"trigger"click":visible-arrow"false"hide"item.…

236. 二叉树的最近公共祖先

题目描述&#xff1a; 主要思路&#xff1a; 利用dfs遍历树&#xff0c;依次判断节点是否为公共祖先节点。 class Solution { public:TreeNode* ans;bool dfs(TreeNode* root, TreeNode* p, TreeNode* q){if(!root)return false;bool ldfs(root->left,p,q);bool rdfs(root…

包的使用及其创建

文章目录 前言类名冲突完整的类路径创建包导入类包总结 前言 java语言中&#xff0c;包在整个管理过程中发挥了重要的作用。使用包&#xff0c;可以有效地管理繁多的类文件&#xff0c;解决了类名重复的问题。在类中应用包和权限修饰符&#xff0c;可以控制他人对类成员的方法的…

被B站用户高赞的广告文案:暴涨900万播放

今年6月&#xff0c;B站公布第一季度财报数据&#xff0c;B站日均活跃用户达9370万&#xff0c;月活3.15亿。在高月活的基础上&#xff0c;用户日均使用时长已经到了96分钟&#xff0c;日均视频播放量达41亿。 来源-B站 用户属性年轻、活跃度高已经成为B站典型的平台标签&…

使用java语言制作一个窗体(弹窗),用来收集用户输入的内容

前言 最近做的一个需求&#xff0c;有个逻辑环节是&#xff1a;需要从本地保存的xml文件中取出一个值&#xff0c;这个值是会变化的。然后项目经理就给我说&#xff0c;你能不能做一个小工具&#xff0c;让用户可以直接通过界面化操作将这个变化的值写入文件&#xff0c;不用再…

Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法)

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;啥技术都喜欢捣鼓捣鼓&#xff0c;喜欢分享技术、经验、生活。 &#x1f60e;人生感悟&#xff1a;尝尽人生百味&#xff0c;方知世间冷暖。 &#x1f4d6;所属专栏&#xff1a;Py…

Redis-持久化、主从集群、哨兵模式、分片集群、分布式缓存

文章目录 高级篇 - 分布式缓存 Redis集群0、单节点Redis的问题一、Redis持久化1.1 RDB 持久化1.1.1 基本介绍1.1.2 RDB的fork原理1.2.3 总结 1.2 AOF持久化1.3 RDB与AOF对比 二、Redis主从集群2.1 介绍2.2 搭建主从集群2.2.1 准备实例、配置2.2.2 启动2.2.3 开启主从关系2.2.4 …