AES = Advanced Encryption Standard,意为高级加密算法,发明人Rijndael,这个标准用来替代原先的DES,是 * 对称密钥加密* 中最流行的算法之一
加密时,将明文信息按照128bit作为一个分块进行AES加密,然后拼接成为一个字符串,剩下不足128Bit需要进行 填充(只有OFB与CTR不需要填充)
AES加密方式说明
- ECB:电子密码本模式(Electorinic CodeBook)
- 优点:既简单又快速,加密与解密均支持并行计算
- 缺点:相同的128Bit块加密出来的数据是一致的,故不建议用于密码加密,无法应对重放攻击
- CBC:密码块链接模式(Cipher-Block-Chaining)
- 优点:明文的重复排列不会出现在密文中,解密时支持并行计算,可单独解密密文块
- 缺点:包含错误比特的密文进行解密时第一个分组以及最后一个分组会出错,加密时不支持并行计算
- CFB:密文反馈模式(Cipher-FeedBack)
- 优点:无需填充,解密支持并行计算,可随意解密密文块
- 缺点:包含错误比特的密文进行解密时第一个分组以及下一个分组会出错,加密时不支持并行计算
- OFB:输出反馈模式(Output-Feedback)
- 优点:无需填充,加密解密可提前预备(解密亦是用的加密手段),包含错误的比特密文时只会影响对应明文而不影响前后明文块
- 缺点:主动攻击者可以修改部分密文达到修改明文的效果,不支持并行计算
- CTR:计算器模式(CounTeR)
- 优点:无需填充,加密解密可提前预备(解密亦是用的加密手段),包含错误的比特密文时只会影响对应明文而不影响前后明文块且支持并行计算
- 缺点:主动攻击者可以修改部分密文达到修改明文的效果
填充方式说明
- NoPadding:不填充
- PKCS#7 & PKCS#5: 如数据缺少n个字节(n>0)则填充n个字节,如已对齐则填充一个长度大小为块,PKCS5是大小固定为8个字节,填充方式两者一致
- ZerosPadding: 无论缺多少的都填充0x00
- ISO 10126: 最后一个字节是填充的字节数,其他全部填入随机数
- ANSI X9.23:最后一个字节是填充的字节数,其他全部填入0
异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。
参考资料
- https://zhuanlan.zhihu.com/p/131324301
- https://zhuanlan.zhihu.com/p/131324301
- https://www.ruanyifeng.com/blog/2021/01/_xor.html
- https://www.fisec.cn/316.html