java加密工作模式None_java加解密算法--对称加密工作模式
对称加密又分为分组加密和序列密码。
分组密码,也叫块加密(block cyphers),一次加密明文中的一个块。是将明文按一定的位长分组,明文组经过加密运算得到密文组,密文组经过解密运算(加密运算的逆运算),还原成明文组。
序列密码,也叫流加密(stream cyphers),一次加密明文中的一个位。是指利用少量的密钥(制乱元素)通过某种复杂的运算(密码算法)产生大量的伪随机位流,用于对明文位流的加密。
解密是指用同样的密钥和密码算法及与加密相同的伪随机位流,用以还原明文位流。
分组加密算法中,有ECB,CBC,CFB,OFB这几种算法模式。
1)ECB(Electronic Code Book)/电码本模式
ECB(电子密本方式)其实非常简单,就是将数据按照8/16节一段进行加密或解密得到一段8/16个字节的密文或者明文,最后一段不足8/16个字节,按照需求补足8/16个字节进行计算,之后按照顺序将计算所得的数据连在一起即可,各段数据之间互不影响。
优点:
1.简单,有利于并行计算,误差不会被传送
缺点:
1.不能隐藏明文的模式
2.可能对明文进行主动攻击
2)CBC(Cipher Block Chaining)/密文分组链接方式
CBC(密文分组链接方式)的实现机制使加密的各段数据之间有了联系。其实现的机理如下:
加密步骤如下:
1)首先将数据按照8/16个字节一组进行分组得到D1D2......Dn(若数据不是8的整数倍,用指定的PADDING数据补位)
2)第一组数据D1与初始化向量I异或后的结果进行加密得到第一组密文C1
3)第二组数据D2与第一组的加密结果C1异或以后的结果进行加密,得到第二组密文C2
4)之后的数据以此类推,得到Cn
5)按顺序连为C1C2C3......Cn即为加密结果。
解密是加密的逆过程,步骤如下:
1)首先将数据按照8/16个字节一组进行分组得到C1C2C3......Cn
2)将第一组数据进行解密后与初始化向量I进行异或得到第一组明文D1(注意:一定是先解密再异或)
3)将第二组数据C2进行解密后与第一组密文数据进行异或得到第二组数据D2
4)之后依此类推,得到Dn
5)按顺序连为D1D2D3......Dn即为解密结果。
这里注意一点,解密的结果并不一定是我们原来的加密数据,可能还含有你补得位,一定要把补位去掉才是你的原来的数据。
优点:
1. 不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准
缺点:
1. 发送方和接收方都需要知道初始化向量 IV
2.加密过程是串行的,无法被并行化(在解密时,从两个邻接的密文块中即可得到一个平文块。因此,解密过程可以被并行化)
3.误差传递
3)Cipher Feedback (CFB)/密文反馈模式
密文反馈(CFB,Cipher feedback)模式类似于CBC,可以将块密码变为自同步的流密码;工作过程亦非常相似,CFB的解密过程几乎就是颠倒的CBC的加密过程:
需要使用一个与块的大小相同的移位寄存器,并用IV将寄存器初始化。然后,将寄存器内容使用块密码加密,然后将结果的最高x位与平文的x进行异或,以产生密文的x位。下一步将生成的x位密文移入寄存器中,并对下面的x位平文重复这一过程。解密过程与加密过程相似,以IV开始,对寄存器加密,将结果的高x与密文异或,产生x位平文,再将密文的下面x位移入寄存器。
与CBC相似,平文的改变会影响接下来所有的密文,因此加密过程不能并行化;而同样的,与CBC类似,解密过程是可以并行化的。
优点:
1.隐藏了明文模式
2.分组密码转化为流模式
3.可以及时加密传送小于分组的数据
缺点:
1.不利于并行计算
2.误差传送:一个明文单元损坏影响多个单元
3.唯一的IV
4)Output Feedback (OFB)/输出反馈模式
输出反馈模式(Output feedback, OFB)可以将块密码变成同步的流密码。它产生密钥流的块,然后将其与平文块进行异或,得到密文。与其它流密码一样,密文中一个位的翻转会使平文中同样位置的位也产生翻转。这种特性使得许多错误校正码,例如奇偶校验位,即使在加密前计算而在加密后进行校验也可以得出正确结果。
每个使用OFB的输出块与其前面所有的输出块相关,因此不能并行化处理。然而,由于平文和密文只在最终的异或过程中使用,因此可以事先对IV进行加密,最后并行的将平文或密文进行并行的异或处理。
可以利用输入全0的CBC模式产生OFB模式的密钥流。这种方法十分实用,因为可以利用快速的CBC硬件实现来加速OFB模式的加密过程。
优点:
1.隐藏了明文模式
2.分组密码转化为流模式
3.可以及时加密传送小于分组的数据
缺点:
1.不利于并行计算
2.对明文的主动攻击是可能的
3.误差传送:一个明文单元损坏影响多个单元
java加密工作模式None_java加解密算法--对称加密工作模式相关推荐
- Python中的AES加解密算法
AES加密的参数及其条件:这个AES加密的主要坑就在于这些条件,首先AES加密有几个参数 秘钥:加密的时候用秘钥,解密的时候需要同样的秘钥才能解出来 明文:需要加密的内容 模式:aes 加密常用的有E ...
- 安全系列(二)-银行加密体系与加解密算法速览
一.银行3级加密体系说明: 转:加密体系介绍(LMK.ZMK.ZAK.ZPK)_炎升的博客-CSDN博客_lmk密钥 二.加解密算法 1.分类说明 其中按国际和国内使用主要分为:通用算法和国密. 通用 ...
- kotlin写的加解密算法,包括模式和填充方式
DES加密 DES是一种对称加密(Data Encryption Standard)算法. DES算法一般有两个关键点,第一个是加密算法,第二个是数据补位. 加密算法常见的有ECB模式和CBC模式: ...
- js des加密 java_Java实现与JS相同的Des加解密算法完整实例
本文实例讲述了Java实现与JS相同的Des加解密算法.分享给大家供大家参考,具体如下: 这里演示java与js实现相同的des加解密算法,不多说,不废话,直接上代码 一.java实现 package ...
- 凯撒加密的python语言程序_python实现凯撒密码、凯撒加解密算法
凯撒密码的原理:计算并输出偏移量为3的凯撒密码的结果 注意:密文是大写字母,在变换加密之前把明文字母都替换为大写字母 def casar(message): # *************begin* ...
- JAVA:实现XXTea加解密算法(附完整源码)
JAVA:实现XXTea加解密算法 public class XXTEAprivate XXTEA() {}public static byte[] encrypt(byte[] data, byte
- KP-ABE基于属性的加密加解密算法及Access Tree构建
注:本文加解密算法构建完全参考经典ABE paper: Attribute-Based Encryption for Fine-Grained Access Control of Encrypted ...
- 基于Java的SQL Server数据库加解密系统设计与实现
目 录 摘 要 1 ABSTRACT 2 第1章 绪论 3 1.1 数据库加解密系统开发背景 3 1.2 国内外现状 3 1.3 本文的主要工作 4 1.4 论文的组织结构 4 第2章 数据库加密的基 ...
- Android金融支付常见加解密算法及安全防护
引言 因为本人从事的金融 IC 卡和移动支付相关的开发工作,在日常研发过程中,对 APP 信息安全防护方面尤为重视,所以现总结下金融支付相关的加解密算法以及常见的安全防范措施. Android 端常见 ...
最新文章
- python判断字符类型alpha_Python3.10第二个alpha版本来了!最新特性值得关注
- Java:使用synchronized和Lock对象获取对象锁
- 学习java的知识体系路线
- java jdbc mysql 乱码_【求助】为什么用纯java jdbc插入mysql一直乱码
- 信息学奥赛一本通 1961:【13NOIP普及组】计数问题 | 洛谷 P1980 [NOIP2013 普及组] 计数问题
- sort();对结构体数组的排序
- MySQL指定存储引擎命令_MySQL常用指令(2)——存储引擎
- P1959 遗址_NOI导刊2009普及(6)
- 文章根据时间段显示的微信名和微信号
- IDE工具的[多行光标编辑模式]
- HDU6383 p1m2
- list转json字符串,实体类包含list转实体类
- 强大的Android参数模拟器,自由修改手机型号、SDK版本号等信息
- 【Unity3D进阶4-8】Unity3D 游戏框架
- 小波分解、去噪、时频分析画图
- idou老师带你认识Istio13:Istio实现基础认证策略
- Vultr VPS如何修改root密码
- Linux CentOS7.0 使用root登录桌面
- 用python控制大华摄像头简单转动
- DataBinding详解
热门文章
- QML 界面切换的几种方法
- php phpanalysis2.0,使用phpAnalysis打造PHP应用非侵入式性能分析器
- zookeeper可视化监控工具_Redis 的可视化监控工具 Redislive 简单使用教程
- c++ 重载 重写_关于C/C++中的++i和i++实现机制的探讨
- 查看linux系统属性
- 信息收集——子域名收集
- 带圆圈大小的散点图_Python数据可视化,Matplotlib绘制“散点图”的两种方法!...
- win10诊断启动后联网_小技巧:win10网络共享文件夹出现错误无法访问如何解决?...
- mysql中索引类型索引方法_MYSQL索引的类型和索引的方式
- python语言有哪两个系列_(转)Python学习笔记系列——Python是一种纯粹的语言