这里是加密函数
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;
}
}