AES/DES 基于三种填充方式的加解密
DES算法是一种用56位密钥来加密分组长度为64位数据的对称密钥算法(实际上函数要求一个64位的密钥作为输入,但是第8、16、24、32、40、48、56、64 等8位是校验位, 使得每个密钥都有奇数个 1,所以参与加密过程的只有56位)。
AES是一个迭代分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文,其分组长度和密钥长度都是可变的,只是为了满足AES的要求才限定处理的分组大小为128位,而密钥长度为128位、192位或256位,相应的迭代轮数N,为10轮、12轮、14轮。AES汇聚了安全性能、效率、可实现性、灵活性等优点。最大的优点是可以给出算法的最佳查分特征的概率,并分析算法抵抗查分密码分析及线性密码分析的能力。
ZeroPadding,数据长度不对齐时使用0填充,否则不填充。
PKCS7Padding,假设数据长度需要填充n(n>0)个字节才对齐,那么填充n个字节,每个字节都是n;如果数据本身就已经对齐了,则填充一块长度为块大小的数据,每个字节都是块大小。
PKCS5Padding,PKCS7Padding的子集,块大小固定为8字节。
接下来附上Qt版的几种填充方式代码
AES-ECB-128-PKCS5 加密解密效果图
DES-ECB-PKCS5 加密解密效果图