Я делаю расшифровку шифрования с использованием алгоритма AES cryptoAPI в ядре Linux.Следующий код работает нормально, если расшифровка выполняется сразу после шифрования.Но я хочу сделать это позже, и тогда это даст мусор.Я храню ключ шифрования для последующей расшифровки.
Код:
void encrypt(char *buf,u8 *key1)
{
struct crypto_cipher *tfm;
int i,count,div,modd;
div=strlen(buf)/AES_BLOCK_SIZE;
modd=strlen(buf)%AES_BLOCK_SIZE;
if(modd>0)
div++;
count=div;
tfm=crypto_alloc_cipher("aes", 0, 16);
crypto_cipher_setkey(tfm,key1,16);
for(i=0;i<count;i++)
{
crypto_cipher_encrypt_one(tfm,buf,buf);
buf=buf+AES_BLOCK_SIZE;
}
crypto_free_cipher(tfm);
}
и:
void decrypt(char *buf,u8 *key1)
{
struct crypto_cipher *tfm;
int i,count,div,modd;
div=strlen(buf)/AES_BLOCK_SIZE;
modd=strlen(buf)%AES_BLOCK_SIZE;
if(modd>0)
div++;
count=div;
tfm=crypto_alloc_cipher("aes", 0, 16);
crypto_cipher_setkey(tfm,key1,16);
for(i=0;i<count;i++)
{
crypto_cipher_decrypt_one(tfm,buf,buf);
buf=buf+AES_BLOCK_SIZE;
}
}