zoukankan      html  css  js  c++  java
  • 分组模式

    转载:链接

    Q:为什么需要分组模式?
    A:明文的长度不固定,而分组密码只能处理特定长度的一块数据,这就需要对分组密码的算法进行迭代,以便将一段很长的明文全部加密,而迭代的方法就是分组的模式。

    五种分组模式

    五种模式详解

    ECB

    Electronic Code Book, 电子密码本模式

    • 特点: 简单, 效率高, 密文有规律, 容易被破解
    • 最后一个明文分组必须要填充
      • des/3des -> 最后一个分组填充满8字节
      • aes -> 最后一个分组填充满16字节
    • 不需要初始化向量

    ECB模式图解


    CBC

    Cipher Block Chaining, 密码块链模式(推荐使用)

    • 特点: 密文没有规律, 经常使用的加密方式
    • 最后一个明文分组需要填充
      • des/3des -> 最后一个分组填充满8字节
      • aes -> 最后一个分组填充满16字节
    • 需要一个初始化向量 - 一个数组
      • 数组的长度: 与明文分组相等
      • 数据来源: 负责加密的人的提供的
      • 加解密使用的初始化向量值必须相同
        CBC模式的加密

    CFB

    Cipher FeedBack, 密文反馈模式

    • 特点: 密文没有规律, 明文分组是和一个数据流进行的按位异或操作, 最终生成了密文
    • 需要一个初始化向量 - 一个数组
      • 数组的长度: 与明文分组相等
      • 数据来源: 负责加密的人的提供的
      • 加解密使用的初始化向量值必须相同
    • 不需要填充
      CFB模式加密

    OFB

    Output-Feedback, 输出反馈模式

    • 特点: 密文没有规律, 明文分组是和一个数据流进行的按位异或操作, 最终生成了密文
    • 需要一个初始化向量 - 一个数组
      • 数组的长度: 与明文分组相等
      • 数据来源: 负责加密的人的提供的
      • 加解密使用的初始化向量值必须相同
    • 不需要填充
      OFB分组模式

    CTR

    CounTeR, 计数器模式(重点,推荐使用)

    • 特点: 密文没有规律, 明文分组是和一个数据流进行的按位异或操作, 最终生成了密文
    • 不需要初始化向量
      • go接口中的iv可以理解为随机数种子, iv的长度 == 明文分组的长度
    • 不需要填充
      这里我们有必要给出CTR模式额解密流程,因为CTR模式的解密和加密是一模一样的过程,在程序实现中也是可逆的,具体程序在文章实现底部有链接
      CTR分组模式
      CTR解密流程
      通过对比发现CTR加密即解密,解密即加密,且各分组之间是独立的,可以并发完成,效率高。

    总结

    以上五种分组模式中,ECB模式很容易被破解,如今已经很少再使用,其余四种分组模式各有千秋。
    但极力推荐CBC模式和CTR模式,尤其是CTR模式,不需要填充,代码实现起来很方便。而且加密和解密的方法是一样的,并且可以实现并发分组,效率高,安全性也有保障

    Q:何时需要填充,何时不需要填充?
    A:观察分组模式的图示可以看出,加密后再进行亦或操作的不需要填充,而先进性亦或操作再加密的则不需要填充,这是因为亦或操作需要两个相同长度的数据,一一对比计算!

    作者: Pam

    出处: https://www.cnblogs.com/pam-sh/>

    关于作者:网安在读

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(mir_soh@163.com)咨询.

  • 相关阅读:
    python 去除字符串两端字符串
    python 找到列表中满足某些条件的元素
    python join函数
    Ambiguous mapping. Cannot map "***Controller" been method解决办法
    uflo2安装与配置
    uflo2概述
    Mybatis-plus中的常用注解
    Spring Cloud Eureka配置文件详解 (还没细看)
    idea安装lombok
    PowerDesigner最基础的使用方法入门学习(一)
  • 原文地址:https://www.cnblogs.com/pam-sh/p/13962219.html
Copyright © 2011-2022 走看看