码迷,mamicode.com
首页 > 其他好文 > 详细

分组密码模式: ECB模式(电子密码本模式)

时间:2016-05-23 22:34:54      阅读:751      评论:0      收藏:0      [点我收藏+]

标签:

在ECB模式中,将明文分组加密之后的结果直接作为密文分组,如下图所示:

技术分享

使用ECB模式加密时,相同的明文分组会被转换为相同的密文分组,也就是说,我们可以将其理解为是一个巨大的"明文分组→密文分组"的对应表,因此ECB模式也称为电子密码本模式。

 

ECB模式优点:

1. 简单

2. 有利于并行计算

3. 误差不会被传送

 

ECB模式缺点:

1. 不能隐藏明文的模式

2. 可能对明文进行主动攻击

 

对ECB模式的攻击,截图来源自图解密码技术一书:

技术分享

技术分享

 

ECB模式的加密:

‘‘‘
假设加密分组为4字节一组
‘‘‘
def Encrypt(strData, key) :
    strEnData = ""
    for i in range(0, len(strData)):
        #按位异或后保存
        rst = ord(list(strData)[i]) ^ ord(list(key)[i])
        strEnData = strEnData + chr(rst)        
    return strEnData

def Decrypt(strData, key) :
    strDeData = ""
    for i in range(0, len(strData)):
        #再次异或还原
        rst = ord(list(strData)[i]) ^ ord(list(key)[i])
        strDeData = strDeData + chr(rst)        
    return strDeData

if __name__ == __main__ : 
    strData = "Hello World!"
    key = "1234"
    i = 0
    j = 4
    strEnData = ""
    
    print("原数据: %s\r\n" % strData)
    
    while True :
        strGroup = strData[i:j]
        if strGroup == ‘‘ :
            break
        strEnData += Encrypt(strGroup, key)
        i += 4
        j += 4
        
    print("加密后: %s\r\n" % strEnData)
    strDeData = ""
    i = 0
    j = 4
    
    while True :
        strGroup = strEnData[i:j]
        if strGroup == ‘‘ :
            break
        strDeData += Decrypt(strGroup, key)
        i += 4
        j += 4
        
    print("解密后: %s\r\n" % strDeData)
    

原数据: Hello World!

加密后: yW_X^d[C^W

解密后: Hello World!

 

分组密码模式: ECB模式(电子密码本模式)

标签:

原文地址:http://www.cnblogs.com/dacainiao/p/5521646.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!