Java加密之IV

2023-10-26

AES是一种**分组密码**。

密码学中,分组(block)密码的工作模式(mode of operation)允许使用同一个分组密码密钥对多于一块的数据进行加密,并保证其安全性。分组密码自身只能加密长度等于密码分组长度的单块数据,若要加密变长数据,则数据必须先被划分为一些单独的密码块。通常而言,最后一块数据也需要使用合适填充方式将数据扩展到匹配密码块大小的长度。一种工作模式描述了加密每一数据块的过程,并常常使用基于一个通常称为初始化向量的附加输入值以进行随机化,以保证安全。

而不同的工作模式的实现细节也不相同,在Java中,指定加密算法的字符串是AES/ECB/PKCS5Padding,也就是“算法/模式/填充方式”。而IV就和工作模式有关。常见的工作模式包括,ECB、CBC、PCBC、CFB、OFB、CTR等。

ECB

加密:

解密:

CBC

加密:

解密:

PCBC

加密:

解密:

根据上面的几张图可以看出,ECB模式下是不需要IV的,而CBC和PCBC是需要IV的。

那么IV的取值有什么需要注意的呢?

在密码学的领域里, 初始化向量(英语:initialization vector,缩写为IV),或译初向量,又称初始变量(starting variable,缩写为SV),是一个固定长度的输入值。一般的使用上会要求它是随机数或拟随机数(pseudorandom)。使用随机数产生的初始化向量才能达到语义安全(散列函数与消息验证码也有相同要求),并让攻击者难以对同一把密钥的密文进行破解。在区块加密中,使用了初始化向量的加密模式被称为区块加密模式。

初始化向量的值依密码算法而不同。最基本的要求是“唯一性”,也就是说同一把密钥不重复使用同一个初始化向量。这个特性无论在区块加密或流加密中都非常重要。

许多要求初始化向量必须让攻击者无法预测。这种要求一般使用随机数或拟随机数来达到。在这种应用中,重复的初始化向量是可以被忽略的,但是生日攻击的问题依然得列入考量,因为若向量可以被预测,会让攻击者找到撤消明文的线索。

初始化向量的值主要还是取决于密码算法。其做法不外乎就是随机或指定(stateful)。使用随机的方式则取值由发送方计算,并要将向量值送交给接收方。指定的方式则是让收发两方分享初始化向量所能指定的所有值(state),这些值收发双方必须预先就定义好。

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

Java加密之IV 的相关文章

  • 全国计算机等级考试题库二级C操作题100套(第84套)

    第84套 函数fun的功能是 从三个形参a b c中找出中间的那个数 作为函数值返 回 例如 当a 3 b 5 c 4时 中数为4 请在程序的下划线处填入正确的内容并把下划线删除 使程序得出正确的结果 注意 源程序存放在考生文件夹下的BLA
  • 软件工程使用软件和软件所能画的图

    迅捷 业务流程图 软件结构图 功能框图 数据字典 序列图 用例图 Visio 业务流程图 软件结构图 功能框图 数据流图 数据字典 序列图 uml 用例图 类图 序列图 活动图 数据流图 Rose 用例图 包图 活动图 序列图 协作图 带有
  • 【测试开发】自动化测试 selenium 篇

    目录 一 什么是自动化测试 二 selenium 1 selenium的工作原理 2 selenium Java的环境搭建 Chrome浏览器 三 selenium中常用的API 1 定位元素 findElement 1 1 css选择语法
  • redis之mq实现发布订阅模式

    示例代码 github 概述 Redis不仅可作为缓存服务器 还可用作消息队列 本示例演示如何使用redis实现发布 订阅消息队列 在Redis中 发布者没有将消息发送给特定订阅者的程序 相反 发布的消息被描述为通道 而不知道 如果有的话
  • 分享Figma一些非常快速、省时、省力的功能和小技巧

    众所周知 越来越多的大工厂正在使用它figma了 那你的figma它是如何使用的 您是否遇到过一些问题或操作不方便的事情 今天 我想和大家分享Figma一些非常快速 省时 省力的功能和小技巧 因为文章属于直译 所以良心哥在编辑时帮你整理知识

随机推荐

  • [系统安全] 五十一.恶意家族分类 (2)基于API序列和深度学习的恶意家族分类实例详解

    您可能之前看到过我写的类似文章 为什么还要重复撰写呢 只是想更好地帮助初学者了解病毒逆向分析和系统安全 更加成体系且不破坏之前的系列 因此 我重新开设了这个专栏 准备系统整理和深入学习系统安全 逆向分析和恶意代码检测 系统安全 系列文章会更
  • 反馈及运放基础了解

    在电子电路中 将输出量 输出电压或输出电流 的一部分或全部通过一定的电路形式作用于输入回路 用来影响其输入量 放电电路的输入电压或输入电流 的措施称为反馈 基本放大电路的输入信号称为净输入量 它不但决定于输入信号 输入量 还与反馈信号 反馈
  • 将linux上的项目传到github上

    在网友的帮助下 终于学会了这一招 1 首先要确定你的linux上有安装了git 2 到你的网页github上新建一个仓库 将其clone到linux上 3 将你的项目放进这个空的仓库 文件夹 3 1 执行命令 git add 4 执行命令
  • 日语动作变形

    动1动词 动2动词 动3动词 基本型 可以作为连体形 行 買 帰 飲 呼 書 食 起 寝 変 準 変 変 来 连用形 行 買 帰 飲 呼 書 食 起 寝 変 準 変 変 来 体 也就是连用形 词尾由 段变为 段加 行
  • 这一年,谢谢自己

    兜兜转转间 这个开局有些艰难的2020就已经过半了 这些日子 你过得还好吗 不管是努力抵抗病痛 还是奋力工作生活 其实一直以来 我们都在路上 摸爬滚打 艰难前行 我们总是在追寻 在求索 为了所爱的人 而默默付出努力 却仍时时觉得对不起他们
  • 基于R语言tidyverse包的数据分析实践

    目录 1 tidyverse包基础 1 0 下载使用tidyverse 1 1 数据清洗 1 1 1 提取数据 1 1 2 数据整理与采样 1 1 3 缺省值处理 1 1 4 重复值处理 1 1 5 异常值处理 1 2 数据预处理 1 2
  • 【bug】ClassCastException 同一个类为什么还会类转换异常?

    错误日志 2021 11 11 20 51 18 304 maomao 3896 nio 8081 exec 2 ERROR c maomao common GlobalExceptionHandler 79 java lang Class
  • Kafka的认证

    Kafka支持基于SSL和基于SASL的安全认证机制 基于SSL的认证主要是指Broker和客户端的双路认证 即客户端认证broker的证书 broker也认证客户端的证书 Kafka还支持通过SASL做客户端认证 SASL是提供认证和数据
  • 数据结构与算法--图的深度优先搜索 (DFS)

    深度优先搜索即是 从起点出发 从规定的方向中选择一个不断往前走 走到头为止 然后尝试另一种方向直到最后的终点 DFS解决的是连通性问题 即从A是否能到达B 采用DFS进行遍历的话 必须依赖栈 后进先出 假设有一个图 里面有A B C D E
  • chromeOS中配置Java环境,部署Tomcat,Eclipse开发环境

    本文基于ChromeOS 版本107 0 5304 110 正式版本 基于java 1 8 0 202 基于apache tomcat 9 0 63 基于eclipse jee 2022 09 R 设置 开发者 Linux开发环境 启用 c
  • Spring Boot + vue-element 开发个人博客项目开发(十、通知公告功能实现)

    前面设计的通知公告中有两个字段不规范 现在我们重新调整一下 调整如下 原先的 noticeContent text NULL COMMENT 公告内容 createBy VARCHAR 128 NOT NULL COMMENT 创建者 修改
  • Qt界面编程(五)—— QDialog对话框(标准对话框、消息对话框、标准文件对话框)

    目录 1 基本概念 1 1 模态对话框 1 2 非模态对话框 2 标准对话框 3 消息对话框 3 1 About 3 2 AboutQt 3 3 Critical 3 4 Infomation 3 5 Question 3 6 warnin
  • ThreadPoolExecutor问题定位

    今天定位了一个内存泄露的问题 错误如下 Exception in thread http exec 24 java lang OutOfMemoryError unable to create newnative thread 众所周知 内
  • 应用程序无法正常启动(0x000007b)或者找不到dll文件(以vcruntime140d.dll为例)的原因原理分析和解决方法(亲测已解决)

    文章目录 一 问题1 由于找不到vcruntime140d dll 无法继续执行代码 重新安装程序可能会解决此问题 二 问题2 应用程序无法正常启动 0x000007b 请单击 确定 关闭应用程序 三 Windows目录下的SysWOW64
  • 【开始学习React Hook(1)】Hook之useState

    react hook是react推出的一种特殊函数 这些函数可以让你在不创建react class的情况下依然可以使用react的一些特性 诸如目前react的钩子函数拥有的所有特性 最常用的hook有useState useEffect
  • 网络安全——从新手入门到大师的学习攻略

    最近经常有网友问我网络安全方面怎么样从入门到大师 或者成为黑客 红客等 其实我想说的是 只要你有毅力 能坚持学习各种必须的网络安全技术和理论知识 随着时间的积累 最终一定会成为你心中最想成为的网络安全专家 本文就着重讲解下网络安全从入门到大
  • Docker搭建漏洞靶场(Vulhub、Vulnapp、Vulfocus)

    文章目录 vulhub 靶场搭建 简介 环境搭建过程 vulnapp靶场搭建 vulfocus靶场搭建 简介 环境搭建 vulhub 靶场搭建 简介 Vulhub是一个面向大众的开源漏洞靶场 无需docker知识 简单执行一条命令即可编译
  • 数据中心联盟第五批大数据产品评测结果出炉,腾讯云大数据斩获多个奖项

    欢迎大家前往腾讯云社区 获取更多腾讯海量技术实践干货哦 近日 在数据中心联盟组织的第五批大数据产品评测中 腾讯云大数据平台取得了两项第一名 特别在Hbase性能上有非常亮眼的表现 其他各项成绩也名列前茅 本月7日 中国通信标准化协会常务副秘
  • 以太坊学习-笔记1

    加密 以太坊有两种不同类型的账户 外部拥有账户 EOA 和合约 EOA 的以太坊地址是从密钥对的公钥部分生成的 以太坊使用的系统是基于公钥加密的系统 密钥是成对出现的 由一个私有 秘密 密钥和一个公共密钥组成 私钥提供对账户的控制权 公钥将
  • Java加密之IV

    AES是一种 分组密码 密码学中 分组 block 密码的工作模式 mode of operation 允许使用同一个分组密码密钥对多于一块的数据进行加密 并保证其安全性 分组密码自身只能加密长度等于密码分组长度的单块数据 若要加密变长数据