各位看一看,这加解密是不是自相矛盾了,加密函数将密文设置为了8的整数倍,解密的时候却判断如果密文长度为8的整数倍就返回-1

这里是加密函数

if (data_in_len <= 0)
{
    g_encryptfailtime++;
    *data_out_len = 0;
    crypto_print(Debug_error)("encode data_in_len error!");
    sendalarm_smw(TYPE_ENCODE_DATA_IN_LEN,ENCODE_DATA_IN_LEN);
    if (card_node_type)
    {
        put_msg_to_queue(serial_num,0,data_in_len,Crypto_Status_Value_Parameter_Fail);
    }
    return -1;
}

if (CRYPTO_AES_ECB == crypto_type)
{
    return card_aes_encode(data_in,data_in_len,data_out,data_out_len,serial_num,r1);
}

int padding_len, i;

//明文填充成8的整数倍
unsigned char *data_in_temp;
padding_len = (data_in_len / PRESENT_BLOCK_SIZE + 1) * PRESENT_BLOCK_SIZE;
*data_out_len = padding_len;
data_in_temp = (unsigned char *)calloc(padding_len, sizeof(unsigned char));
memcpy(data_in_temp, data_in, data_in_len);
if(0 != (data_in_len % PRESENT_BLOCK_SIZE))
{    
    for(i = data_in_len; i < padding_len; i++)
        data_in_temp[i] = padding_len - data_in_len;
}
else
{
    for(i = data_in_len; i < padding_len; i++)
        data_in_temp[i] = PRESENT_BLOCK_SIZE; //这里填充了data_in_temp 加了几个数字
}

}
下面是解密函数

if ((data_in_len<=0) || (data_in_len % PRESENT_BLOCK_SIZE)) //为1执行,所以需要大于0且不为8的整数倍 但是最后会乘8,这是几个意思?
{
    g_decryptfailtime++;
    *data_out_len = 0;
    crypto_print(Debug_error)("decode data_in_len error!\n");
    sendalarm_smw(TYPE_DECODE_DATA_IN_LEN,DECODE_DATA_IN_LEN);
    if (card_node_type)
    {
        put_msg_to_queue(serial_num,1,data_in_len,Crypto_Status_Value_Parameter_Fail);
    }
    return -1;
}

}