分组加密, 算法模式(ECB CBC CFB OFB)

2023-05-16

如果觉得写得不错,烦请微信搜索公众号 "郑州行疆户外" 了解程序员的户外业余喜好。

块加密

块加密,英文Block Cyper,又称分组加密,是一种常见的对称加密,具有代表性的块加密有DES,AES,3DES等。块加密的工作模式允许使用同一个分组密码密钥对多于一块的数据进行加密,并保证其安全性。

ECB模式

又称电子密码本模式:Electronic code book,是最简单的块密码加密模式,加密前根据加密块大小(如AES为128位)分成若干块,之后将每块使用相同的密钥单独加密,解密同理。

缺点在于同样的明文块会被加密成相同的密文块;因此,它不能很好的隐藏数据模式。在某些场合,这种方法不能提供严格的数据保密性,因此并不推荐用于密码协议中。

CBC模式

密码分组链接(CBC,Cipher-block chaining)模式,由IBM于1976年发明,每个明文块先与前一个密文块进行异或后,再进行加密。在这种方法中,每个密文块都依赖于它前面的所有明文块。同时,为了保证每条消息的唯一性,在第一个块中需要使用初始化向量IV。

CBC是最为常用的工作模式。它的主要缺点在于加密过程是串行的,无法被并行化,而且消息必须被填充到块大小的整数倍。在加密时,明文中的微小改变会导致其后的全部密文块发生改变,而在解密时,从两个邻接的密文块中即可得到一个明文块。因此,解密过程可以被并行化,而解密时,密文中一位的改变只会导致其对应的明文块完全改变和下一个明文块中对应位发生改变,不会影响到其它明文的内容。

CFB

密文反馈(CFB,Cipher feedback)模式与ECB和CBC模式只能够加密块数据不同,可以将块密码变为自同步的流密码;CFB的解密过程几乎就是颠倒的CBC的加密过程。

注意:CFB、OFB和CTR模式中解密也都是用的加密器而非解密器。
CFB的加密工作分为两部分:
1.   将一前段加密得到的密文再加密;
2.   将第1步加密得到的数据与当前段的明文异或。
由于加密流程和解密流程中被块加密器加密的数据是前一段密文,因此即使明文数据的长度不是加密块大小的整数倍也是不需要填充的,这保证了数据长度在加密前后是相同的。

OFB

OFB模式(输出反馈:Output feedback),OFB是先用块加密器生成密钥流(Keystream),然后再将密钥流与明文流异或得到密文流,解密是先用块加密器生成密钥流,再将密钥流与密文流异或得到明文,由于异或操作的对称性所以加密和解密的流程是完全一样的。

OFB与CFB一样都非常适合对流数据的加密,OFB由于加密和解密都依赖与前一段数据,所以加密和解密都不能并行。

 

如果觉得写得不错,烦请微信搜索公众号 "郑州行疆户外" 了解程序员的户外业余喜好。

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

分组加密, 算法模式(ECB CBC CFB OFB) 的相关文章

随机推荐

  • SLF4J: Defaulting to no-operation (NOP) logger implementation 解决办法

    错误提示 SLF4J Failed to load class 34 org slf4j impl StaticLoggerBinder 34 SLF4J Defaulting to no operation NOP logger impl
  • git错误:unable to auto-detect email address

    idea 用git更新的时候报错 详细错误信息如下 Tried to save uncommitted changes in stash before Update but failed with an error stash file D
  • SpringBoot 测试类无法自动注入@Autowired

    原来的测试类的注解 xff1a 64 RunWith SpringRunner class 64 SpringBootTest 一直没法自动注入 xff0c 后来在 64 SpringBootTest xff0c 加入启动类Applicat
  • ##单片机和linux学习的关系,为什么学习linux?希望成为linux驱动工程师?

    我们知道单片机是要学习的 xff0c 那么怎么去学习单片机 xff1f 在上一课我们说不要使用老一套的方法学习 xff0c 实际上是指的两个问题 第一 xff1a 选择什么开发板 xff1b 第二 xff1a 使用什么开发工具 xff1b
  • [ROS连载学习篇 1 ]基于树莓派3B+的Ubuntu mate16.04安装

    前言 xff1a 笔者是一名在读本科生 xff0c 专业为电气工程及其自动化 xff0c 因个人兴趣加入学校一工作室学习ROS xff0c 但学校内设备有限 xff0c 配套的学习硬件只有树莓派3B 43 xff0c 在笔者大量查翻网页论坛
  • 推荐一些学习嵌入式经典的书籍

    在学习嵌入式的过程中 xff0c 到现在为止 xff0c 我还是看了有一部分书了 不得不说 xff0c 很多书就像经典一样 xff0c 永远不会过时 等到你再去品味的时候 xff0c 又会有新的体会 学无止境 xff01 学习也是一种不断积
  • 安装配置Ubuntu-22.04于WSL2的图形化界面

    WSL2安装可以参考微软的官方教程 xff0c 已经很简单了 xff1a 安装 WSL Microsoft Learn 注意部分网络环境在安装时可能需要科学上网 至于Ubuntu 22 04可以在应用商店里找到 xff0c 也可以使用以下命
  • Android中的自定义注解(反射实现-运行时注解)

    预备知识 xff1a Java注解基础 Java反射原理 Java动态代理 一 布局文件的注解 我们在Android开发的时候 xff0c 总是会写到setContentView方法 xff0c 为了避免每次都写重复的代码 xff0c 我们
  • Android 开发的技术方向

    xff11 应用开发 xff12 源码级开发 分为系统应用开发 xff0c Framework开发 xff0c 底层浏览器内核开发 xff0c 音视频编码开发 虚拟机开发 底层驱动开发等系统ROM相关的开发 3 安全 逆向 xff0c 病毒
  • Java内存优化和性能优化的几点建议

    1 没有必要时请不用使用静态变量 使用Java的开发者都知道 xff0c 当某个对象被定义为stataic变量所引用 xff0c 这个对象所占有的内存将不会被回收 有时 xff0c 开发者会将经常调用的对象或者变量定义为static xff
  • Linux系统安装docker并用ssh登录docker容器

    说明 xff1a 我使用的是Centos安装docker 第一步 xff1a 安装docker sudo yum install y yum utils sudo yum config manager add repo https down
  • 码云使用简介

    1 xff0c 何为码云 xff1f 码云属于中国的一个代码托管平台 xff0c 由 OSCHINA NET推出 简单说 xff0c 相当于GitHub的精简版 xff0c 对像小编这样英文盲显得更为友善 xff01 2 xff0c 下载及
  • Centos7搭建KVM虚拟化环境

    如果觉得写得不错 xff0c 烦请微信搜索公众号 34 郑州行疆户外 34 了解程序员的户外业余喜好 1 查看系统版本 root 64 openstack cat etc centos release CentOS Linux releas
  • Linux字符驱动之主设备号与次设备号

    drv demo c include lt linux version h gt include lt linux init h gt include lt linux module h gt include lt linux pci h
  • linux 更新内核,安装内核树

    https www cnblogs com williamjie p 10723919 html
  • x86计算CPU频率示例

    include lt stdio h gt include lt stdlib h gt include lt assert h gt include lt stdint h gt include lt string h gt includ
  • SM2 签名预处理操作

    如果觉得写得不错 xff0c 烦请微信搜索公众号 34 郑州行疆户外 34 了解程序员的户外业余喜好 转载 xff1a https www xuebuyuan com 1473900 html 一般情况下 xff0c 计算数字签名时应执行以
  • dataset中shuffle()、repeat()、batch()用法

    import numpy as np import tensorflow as tf np random seed 0 x 61 np random sample 11 2 make a dataset from a numpy array
  • Linux内核模块编程,多源码Makefile编写

    https mp csdn net console editor html 107838044 在学习内核模块编程的时候遇到了一些由于Makefile书写不正确导致的问题 一个 c源文件的Makefile按照网上的大部分资料介绍那样是没有问
  • 分组加密, 算法模式(ECB CBC CFB OFB)

    如果觉得写得不错 xff0c 烦请微信搜索公众号 34 郑州行疆户外 34 了解程序员的户外业余喜好 块加密 块加密 xff0c 英文Block Cyper xff0c 又称分组加密 xff0c 是一种常见的对称加密 xff0c 具有代表性