2012-02-09 8 views
2

LinuxカーネルのcryptoAPIのAESアルゴリズムを使用して暗号化復号化を行っています。次のコードは、暗号化の後ですぐに復号化が行われる場合にうまく機能します。しかし、私はこれを後で行い、そのゴミを与えたい。私は後で復号化のために暗号化キーを保管しています。AESエラーのLinuxカーネルの暗号API

コード:

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; 
    } 
} 
+0

私は常にごみを与えています。私は暗号化メソッドの終了時にdecryptメソッドを呼び出す。何か案が?暗号化の後で復号化がすぐに実行された場合、「正常に動作する」と言われたとき、どうしましたか? –

+0

はい、私と同じことが起こっています。 「暗号化の直後に解読できる」という問題を解決できますか? –

答えて

0

私はあなたがのalloc DSTに試すことができますsrc.MaybeからこのAPI

crypto_cipher_encrypt_one(tfm,dst,src);

必見の差分DSTを考える[16 ]。

私は、diffと成功しようとします。