`
zhaosong
  • 浏览: 36643 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

对称块加密算法加密模式

阅读更多
在现有的对称加密算法中,主要有4种加密处理模式,这4种加密处理模式一般是针对块加密算法而言的,如DES算法。这4种加密模式罗列如下:

   模式中文描述            英文名称(Openssl缩写)
  电子密码本模式  Electronic Code Book(ECB)
   加密块链模式          Cipher Block Chaining(CBC)
   加密反馈模式          Cipher Feedback Mode(CFB)
   输出反馈模式          Output Feedback Mode(OFB)
  
下面我们分别介绍这4种加密模式。
【电子密码本模式】
这种模式是最早采用和最简单的模式,它将加密的数据分成若干组,每组的大小跟加密密钥长度相同,然后每组都用相同的密钥进行加密。比如DES算法,一个64位的密钥,如果采用该模式加密,就是将要加密的数据分成每组64位的数据,如果最后一组不够64位,那么就补齐为64位,然后每组数据都采用DES算法的64位密钥进行加密。下图:
_______________________
My name |is Drago|nKing
-----------------------
上图“My name is DragonKing”这句话每8个字符(64位)作为一块,然后使用一个相同的64位的密钥对每个块进行加密,最后一块不足64位,就补齐后再进行加密。
可以看到,因为ECB方式每64位使用的密钥都是相同的,所以非常容易获得密文进行密码破解,此外,因为每64位是相互独立的,有时候甚至不用破解密码,只要简单的将其中一块替换就可以达到黑客目的。
【加密块链模式】
该模式如下图所示:
            P0           P1                              C0            C1
            |               |                                  |              |
            |               |                                  |----|        |--->...
IV--->XOR  |--->XOR  |--->...          Key Dec  |      Dec
            |      |        |      |                           |      |       |
            |      |        |      |                           |      |       |
  Key Enc     |     Enc    |               IV--->XOR  |--->XOR   
            |-----|        |-----|                          |               |    
            |               |                                 |               |
           C0           C1                               P1            P2
         加密过程                                      解密过程

从这两个图中大家可以看到,CBC模式的加密首先也是将明文分成固定长度(64位)的块(P0,P1...),然后将前面一个加密块输出的密文与下一个要加密的明文块进行XOR(异或)操作计算,将计算结果再用密钥进行加密得到密文。第一明文块加密的时候,因为前面没有加密的密文,所以需要一个初始化向量(IV)。跟ECB方式不一样,通过连接关系,使得密文跟明文不再是一一对应的关系,破解起来更困难,而且克服了只要简单调换密文块可能达到目的的攻击。
但是该加密模式的缺点是不能实时解密,也就是说,必须等到每8个字节都接受到之后才能开始加密,否则就不能得到正确的结果。这在要求实时性比较高的时候就显得不合适了。所以才有了下面两种加密模式。
【加密反馈模式】
加密反馈模式为了克服必须等待8个字节全部得到才能进行解密的缺点,采用了一个64位(8个字节)的位移寄存器来获得密文,如下图所示:

      C2|C3|C4|C5|C6|C7|C8|C9<---|           C2|C3|C4|C5|C6|C7|C8|C9<---|
      -------------------------------    |           -------------------------------    |
                        |                        |                              |                       |
                        |                        |                              |                       |
           Key--->Enc                     |C10           Key--->Enc                    |C10
                        |                        |                              |                       |
                        |                        |                              |                       |
           取最左一个字节             |                取最左一个字节              |
                        |                        |                              |                       |
                        |                        |                              |                       |
         P10--->XOR----------------->C10         C10--->XOR----------------)--->P10
                                                                               |______________|
               加密过程                                               解密过程

上面两个图中C2、C3以及P10等都是一个字节(8位)的数据,所以能够实现字符的实时加密和解密,不用再等到8个字节都接受到之后再进行解密。图示是在进行第10个字节数据的加密和解密过程,在该过程中,先从移位寄存器取8个字节的数据(C2到C9)用密钥进行加密,然后取加密数据最左边的一个字节跟输入的明文P10进行XOR(异或)操作,得到的值作为输出密文C10,同时将C10送入到移位寄存器中。
需要注意的是,如果其中有一个字节的密文在传输的时候发生错误(即使是其中的一位),那么它出现在移位寄存器期间解密的8个字节的数据都会得不到正确的解密结果,当然,这8个字节过去之后,依然可以得到正确的解密结果。但是一个比特错误就影响到8个字节(64个比特)的正确结果,导致鲁棒性太差,所以就又提出了下面的加密模式OFB。
【输出反馈模式】
输出反馈模式OFB跟CFB几乎是一样的,除了其以为寄存器的输入数据稍微有一点不同之外,如下图:
      S2|S3|S4|S5|S6|S7|S8|S9<----|          S2|S3|S4|S5|S6|S7|S8|S9<------|
      -------------------------------    |           -------------------------------    |
                        |                        |                              |                       |
                        |                        |                              |                       |
           Key--->Enc                     |S10           Key--->Enc                    |S10
                        |                        |                              |                       |
                        |                        |                              |                       |
           取最左一个字节             |                取最左一个字节              |
                        |______________|                              |_____________|
                        |                                                       |                      
         P10--->XOR----------------->C10         C10--->XOR------------------->P10
                                                                               
               加密过程                                               解密过程
可以看到,这种方法因为没有采用密文作为加密的数据,所以克服了由于传输过程中由于单个比特导致64个相关比特解密失败的情况,在本模式下,如果一个比特发生错误了,那么只会影响其本身对应的一个比特,而不会影响别的。但是相对于其它模式,因为数据之间相关性小,这种加密模式是比较不安全的,所以在应用的时候除非特别需要,一般不提倡应用OFB模式。

【参考资料】
1.中国openssl专业论坛 http://openssl.126.com
2.Computer Networks
3.《应用密码学》

分享到:
评论

相关推荐

    密码学实验_对称加密算法DES_非对称加密算法RSA.pdf

    DES是一种广泛使用的对称加密算法,它基于Feistel结构,以64位的数据块和64位的密钥进行操作。实验步骤如下: 1. **明文处理**:首先,从文件中读取明文,将其转换为ASCII码,再转换为比特流。每64位分为一组,不足...

    RSA非对称加密算法

    RSA 非对称加密算法 RSA 非对称加密算法是一种经典的非对称加密算法,由罗纳德·李维斯特、阿迪·萨莫尔和伦纳德·阿德曼三人于 1977 年共同提出的。该算法的主要思想是基于大素数的乘积和因式分解之间的关系,通过...

    常见加密算法方式(对称加密和非对称加密)

    在实际操作中,经常采用混合加密模式:利用非对称加密算法交换对称加密算法的密钥,再利用对称加密算法加密实际数据,从而结合两种加密算法的优点。 总之,加密算法是信息安全领域的基石,合理选择和使用加密算法...

    非对称加密算法 数字签名算法

    非对称加密算法和数字签名是信息技术中两个关键的安全概念,尤其在网络安全和数据保护方面起着至关重要的作用。在Java编程环境中,这些技术被广泛应用于实现安全通信、身份验证和数据完整性保护。 非对称加密算法,...

    java加密算法:Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法

    java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...

    非对称加密算法流程图

    非对称加密算法流程图,使用visio绘制。

    对称加密算法概述

    这些函数提供了一种统一的方式来处理多种对称加密算法,如AES、DES等。 EVP_Encrypt*...*函数系列主要是对EVP_Cipher*...*系列的封装,虽然它们名字不同,但实际上它们的功能相似,都是用于执行对称加密操作。EVP_...

    C#开发的对称加密算法

    在IT领域,对称加密算法是一种广泛用于数据保护的技术,特别是在C#编程环境中。这种算法基于一个密钥,用于加密和解密数据,因此被称为“对称”,因为用于加密和解密的密钥是相同的。下面我们将深入探讨C#中的对称...

    基于java的开发源码-Blowfish对称密钥加密算法类和实例.zip

    基于java的开发源码-Blowfish对称密钥加密算法类和实例.zip 基于java的开发源码-Blowfish对称密钥加密算法类和实例.zip 基于java的开发源码-Blowfish对称密钥加密算法类和实例.zip 基于java的开发源码-Blowfish对称...

    ECC非对称加密算法

    ECC非对称加密算法, 最快,最安全的加密算法

    OpenSSL对称加密算法中如何添加新算法

    OpenSSL 对称加密算法中如何添加新算法 OpenSSL 是一个开源的加密算法库,它提供了对称加密算法、非对称加密算法、哈希算法等多种加密算法。OpenSSL 的对称加密算法中可以添加新算法,以满足不同的加密需求。下面...

    非对称加密算法

    这种加密方式的核心优势在于提高了数据的安全性,因为它解决了传统对称加密算法中密钥分发的问题。在非对称加密中,公钥可以公开分享给任何人,而私钥则必须由接收方妥善保管。 #### 2. 改进的非对称加密算法 本文...

    易语言自创对称加密算法

    易语言自创对称加密算法

    SM4对称加密算法源码

    SM4对称加密算法源码 SM4对称加密算法是一种block Cipher 加密算法,用于保护数据的安全性和完整性。SM4算法是中国国家商用密码算法,广泛应用于 Wireless networks、Cloud Computing、Big Data 等领域。 SM4算法...

    Java实现的对称加密算法AES定义与用法详解

    "Java实现的对称加密算法AES定义与用法详解" 对称加密算法AES是当前使用最多的加密算法之一,其主要特点是高级的、安全的、快速的和灵活的。下面我们将详细介绍Java实现的对称加密算法AES的定义、特点、用法及使用...

    PBE是一种基于口令的加密算法,使用口令代替其他对称加密算法中的密钥,其特点在于口令由用户自己掌管,不借助任何物理媒体;

    PBE算法是对称加密算法的综合算法,常见算法PBEWithMD5AndDES,使用MD5和DES算法构建了PBE算法。将盐附加在口令上,通过消息摘要算法经过迭代获得构建密钥的基本材料,构建密钥后使用对称加密算法进行加密解密。 ...

    对称加密算法与非对称加密算法.doc

    ### 对称加密算法与非对称加密算法 #### 对称加密算法 ##### 概述 对称加密算法是一种历史悠久且广泛使用的加密技术。在这种加密方式中,加密和解密使用相同的密钥。也就是说,发送方使用一个密钥来加密信息,接收...

    对称加密算法(vb)

    由于描述中提到作者编写了一个对称加密算法,这通常意味着作者可能基于现有的加密思想或者设计了自己的加密模式。自编算法可能会有创新之处,但也有风险,因为未经广泛测试和分析,可能不如已知的、经过严格审查的...

    文件内容加密工具(非对称RSA加密算法版)

    本文将详细介绍一种非对称加密算法——RSA,以及如何使用它来加密文件内容。 RSA是一种广泛使用的公开密钥加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,因此得名RSA。它的核心原理基于大数...

Global site tag (gtag.js) - Google Analytics