Crypto api в ядре Linux для ошибки AES - PullRequest
3 голосов
/ 10 февраля 2012

Я делаю расшифровку шифрования с использованием алгоритма 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;  
    }  
}  

1 Ответ

0 голосов
/ 18 марта 2013

Я думаю, что этот API

crypto_cipher_encrypt_one(tfm,dst,src);

должен отличаться от dst от src.Может быть, вы можете попытаться выделить dst [16].

Я пытаюсь различать,и успех.

...