1.简介
128位的加密算法,密钥是动态传入也可以固定,算法已经经过了验证。
2.代码
char key[16] = {0,};
en_ctx
de_ctx
(1)设置密钥
void set_encrypt_key(char *key)
{
char key_buf[16];
memcpy(key_buf,key,16);
aes_setkey_enc(&en_ctx,(unsigned char *)key_buf, 128);
aes_setkey_dec(&de_ctx,(unsigned char *)key_buf, 128);
}
(2)加密,解密
void encrypt_data(uint8_t *ciphertext,uint8_t *plaintext, uint16_t datalen)
{
int i = 0;
for (i=0;i<datalen;i+=16)
{
aes_crypt_ecb(&en_ctx, AES_ENCRYPT, plaintext+i, ciphertext+i);
}
}
void decrypt_data(uint8_t *ciphertext,uint8_t *plaintext, uint16_t datalen)
{
int i = 0;
for (i=0;i<datalen;i+=16)
{
aes_crypt_ecb(&de_ctx, AES_DECRYPT, ciphertext+i, plaintext+i);
}
}
以上为封装好的函数,已经经过了验证和修改,该加密算法可以加解16N倍的数据(如果不是16的倍数,会在后面补0),加密后得到的数据为16N的倍数。
具体的源文件,和使用,将在下一个章节贴出源代码。