块加密,英文Block Cyper,又称分组加密,是一种常见的对称加密,具有代表性的块加密有DES,AES,3DES等。块加密的工作模式允许使用同一个分组密码密钥对多于一块的数据进行加密,并保证其安全性。
主要用于 AES、DES 算法
又称电子密码本模式:Electronic codebook,是最简单的块密码加密模式,加密前根据加密块大小(如AES为128位)分成若干块,之后将每块使用相同的密钥单独加密,每块加密结果进行拼接即为最终加密结果。解密同理。
以 DES/ECB/NOPadding 算法为例,进行验证
1 | 源1:1234567812345678 |
分别对以上3个源串(hex)做加密,结果为
1 | 密文1: 738189139E0B66E1 |
可以发现,(密文3 = 密文1 + 密文2),与 (源3 = 源1 + 源2 )是能够呼应的。
以 AES/ECB/NOPadding 算法为例,进行验证
1 | 源1:12345678123456781234567812345678 |
分别对以上3个源串(hex)做加密,结果为
1 | 密文1: D7EEEE18C420FAF0DC7DB5CA73A2B817 |
可以发现,(密文3 = 密文1 + 密文2),与 (源3 = 源1 + 源2 )是能够呼应的。
缺点 :在于同样的明文块会被加密成相同的密文块;因此,它不能很好的隐藏数据模式。在某些场合,这种方法不能提供严格的数据保密性,因此并不推荐用于密码协议中。
密码分组链接(CBC,Cipher-block chaining)模式,由IBM于1976年发明,每个明文块先与前一个密文块进行异或后,再进行加密。在这种方法中,每个密文块都依赖于它前面的所有明文块。同时,为了保证每条消息的唯一性,在第一个块中需要使用初始化向量IV。
CBC是最为常用的工作模式。
主要缺点: 在于加密过程是串行的,无法被并行化,而且消息必须被填充到块大小的整数倍。在加密时,明文中的微小改变会导致其后的全部密文块发生改变,而在解密时,从两个邻接的密文块中即可得到一个明文块。因此,解密过程可以被并行化,而解密时,密文中一位的改变只会导致其对应的明文块完全改变和下一个明文块中对应位发生改变,不会影响到其它明文的内容。
以DES算法进行验证
1 |
|
首先对 源1 进行CBC模式的加密,得出密文1
其次用 源1 异或 初始化向量,在用ECB模式对异或结果进行加密,得出密文2
可以看出,密文1 = 密文2
其他模式,如:PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8
并不常用,所以此文并不摘录,若想了解可从参考资料中自行查看
https://www.cnblogs.com/starwolf/p/3365834.html
https://www.cnblogs.com/baihuitestsoftware/articles/7090134.html
https://blog.csdn.net/jerry81333/article/details/78336616