一些重要的概念理解请参考:http://blog.sina.com.cn/s/blog_60cf051301015orf.html#cmt_2129410
使用mbedtls进行加密的算法:
void aes_Encrypt(char *pIn)
{
char key[17];
int err = 0;
int n;
aes_context aes;
strcpy(key, "Hje12VCzXiu4keyy");
unsigned char inBuf[1024] = {0};
int en_len = 0; int len;
char arrEncodeData[1024] = {0};//加密后得到的数据
char *pOutAesEncode = arrEncodeData;
len = strlen((char*)pIn);
aes_setkey_enc(&aes, key, 128);// set encrypt key
/*循环加密,这样写在公司服务器端可以解密,但是我觉得这
并不合规,因为如果被加密的长度是16的整数倍,其实是需要
扩充的,需要扩充16长度,内容为全0,然后在加密一次,这样
才比较标准,我们暂时不管这个*/
while(en_len < len) {
aes_crypt_ecb(&aes, AES_ENCRYPT, pIn, pOutAesEncode);
pIn +=AES_BLOCK_SIZE;
pOutAesEncode += AES_BLOCK_SIZE;
en_len += AES_BLOCK_SIZE;
}
printf("outbuf:%s\n", arrEncodeData);
}
使用openssl的时候也是类似,只是把那几个函数替换一下就可以了