在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!
时间: 2024-11-07 18:23:45