zoukankan      html  css  js  c++  java
  • 对称加密算法的几种模式优缺点一览

    ECB模式

    wKioL1d1OMShlESDAACHAtER2cY549.png

    ECB模式的加密

    wKiom1d1OMXif9HiAACElYGQIdM425.png

    ECB模式的解密


    CBC模式

    一般来说,每次加密时都会随机产生一个不同的比特序列来作为初始化向量。

    wKiom1d1RDjA8wocAACqLoPluUI090.png

    CBC模式的加密

    wKiom1d1RDiyYOzvAACah4mK8nY122.png

    CBC模式的解密


    CFB模式

    wKioL1d1R_aCKraMAACMl67Nc7c186.png

    CFB模式的加密

    wKiom1d1R_bwu4ryAACMzLzbnMM683.png

    CFB模式的解密

     


    OFB模式

    wKioL1d1TOGQGw5EAACT0ZTlDDA915.png

    CFB模式的加密

    wKiom1d1TOGw2tKgAACSzQySQzs517.png

    CFB模式的解密

     


    CTR模式

    wKioL1d1TnDCkJ62AACkbrdvrBk821.png

    CTR模式的加密

    wKioL1d1TnDgbk4nAAChPXkYf7M362.png

    CTR模式的解密

    对称密码中常见的又ECB、CBC、CFB、OFB 和 CTR等模式。   下面我们对这些模式的特点做一下整理。


    首先,希望大家搞清楚每种模式的3个字母到底是什么的缩写。如果能够记住每个模式的名称,就能够在头脑中想象出相应的结构图,也就能够搞清楚每个模式的特点了。

    模式 名称 优点 缺点 备注
    ECB模式 Electronic CodeBook电子密码本模式
    • 简单

    • 快速

    • 支持并行计算(加密、解密)

    • 明文中的重复排列会反映在密文中

    • 通过删除、替换密文分组可以对明文进行操作

    • 对包含某些比特错误的密文进行解密时,对应的分组会出错

    • 不能抵御重放攻击

    必应使用
    CBC模式 Cipher Block Charning密文分组链接模式
    • 明文的重复排列不会反映在密文中

    • 支持并行计算(仅解密)

    • 能够解密任意密文分组

    • 对包含某些错误比特的密文进行解密时,第一个分组的全部比特以及后一个分组的相应比特会出错

    • 加密不支持并行计算

    推荐使用

    CFB模式 Cipher-FeedBack密文反馈模式
    • 不需要填充(padding)

    • 支持并行计算(仅解密)

    • 能够解密任意密文分组

    • 加密不支持并行计算

    • 对包含某些错误比特的密文进行解密时,第一个分组的全部比特以及后一个分组的相应比特会出错

    • 不能抵御重放攻击

    • 现在已不使用

    • 推荐用CTR模式代替

    OFB模式 Output-FeedBack输出反馈模式
    • 不需要填充(padding)

    • 可事先进行加密、解密的准备

    • 加密、解密使用相同结构

    • 对包含某些错误比特的密文进行解密时,只有铭文中相应的比特会出错

    • 不支持并行运算

    • 主动攻击这反转密文分组中的某些比特时,明文分组中相对应的比特也会被反转

    推荐使用CTR模式代替
    CTR模式 CounTeR计数器模式
    • 不需要填充(padding)

    • 可事先进行加密、解密的准备

    • 加密、解密使用相同的结构

    • 对包含某些错误比特的密文进行解密时,只有明文中相对应的比特会出错

    • 支持并行计算(加密、解密)

    主动攻击者反转密文分组中的某些比特时,明文分组中对应的比特也会被反转 推荐使用


     

    《实用密码学》[Schneier,2003]一书中指出,不应使用ECB模式,而推荐使用CBC模式和CTR模式。详情可参见《实用密码学》一书。

    原文链接:http://blog.51cto.com/professor/1794740

  • 相关阅读:
    转:Contrastive Loss (对比损失)
    转:Siamese network 孪生神经网络
    pytorch的nn.MSELoss损失函数
    python创建包
    pytorch中如何在lstm中输入可变长的序列
    转:python中with的用法
    转:np.insert函数
    转:分类模型的评估指标
    Codeforces Round #525 (Div. 2) C. Ehab and a 2-operation task(构造)
    Educational Codeforces Round 53 (Rated for Div. 2) C. Vasya and Robot
  • 原文地址:https://www.cnblogs.com/Terry-Wu/p/10314070.html
Copyright © 2011-2022 走看看