AES加密中的补位

      针对aes加密的c实现过程,一般会用到补位。aes加密的原数据长度要求是16的整数倍,但实际操作过程中并不能保证每次待加密的数据长度都能使16的整数倍,所以这时候就需要进行补位,在进行加密才能得到正确的加密数据。

       c开发中常用的补位方式主要NoPadding,zeroPadding,PKCS5Padding,PKCS7Padding四种方式。其中PKCS5Padding和PKCS7Padding使用起来一样。

NoPadding:不进行补位操作,保持源数据。

zeroPadding:末尾补0操作。对于源数据长度不是16的整数倍时,在末尾补0至长度为16的整数倍;

        例如:char src_buff[ MAX_LEN] = "ABCDEFGHIJKL" ;

                   int src_len = strlen(src_buf);

                   for(int i=0;i<(16-src_len%16);i++)

                             src_buf[src_len+i] = 0;

                    src_len = src_len + (16-src_len%16);

       另外一种情况是源数据长度正好是16的整数倍时,需要在数据末尾补16个0.(需注意!!!!!)

PKCS5Padding :对于源数据长度不是16的整数倍时,在末尾补(16-src_len%16)至长度为16的整数倍;

        例如:src_buf[ MAX_LEN] = "ABCDEF" ;

                   src_len = 6;

                   for(i=0;i<(16-src_len%16);i++)

                            src_buf[src_len+i] = (16-src_len%16);

                    src_len = src_len+(16-src_len%16);

     另外一种情况是源数据长度正好是16的整数倍时,需要在数据末尾补16个16.(需注意!!!!!)

PKCS7Padding:  与PKCS5Padding使用相同。

 

补位方法已经经过验证,后面会再更新一篇关于c实现的AES  ECB模式的加密实现源码。

你可能感兴趣的:(AES加密中的补位)