2011-09-18 7 views
5

Sto eseguendo il porting di un'applicazione PHP in C++. L'applicazione PHP sta usando questa funzione:Qual è l'equivalente in C++ della funzione hash_hmac di PHP?

hash_hmac - generare un valore hash con chiave con il metodo HMAC

Se ho questo codice, che cosa sta realmente facendo?

$sStr = hash_hmac ('sha256', $mydata,$mykey, $raw = true) 

So che crittografa alcuni dati utilizzando sha256 e la mia chiave, ma come posso eseguire questo in C++?

Ho trovato le librerie hmac e sha2, ma non sono sicuro se sono ciò di cui ho bisogno.

+0

Perché vuoi alla porta il codice PHP in codice C++? – daGrevis

+1

guadagno di prestazioni – user63898

risposta

16

Vorrei prendere in considerazione lo OpenSSL, una libreria crittografica completa e portatile (nonostante il suo nome, non solo SSL). Ha un HMAC library che puoi sicuramente avvolgere per ottenere una funzione simile.

Ecco un esempio su come utilizzare OpenSSL' biblioteca HMAC, tratto da another question on StackOverflow (annotazioni mio):

// Initialize HMAC object. 
HMAC_CTX ctx; 
HMAC_CTX_init(&ctx); 

    // Set HMAC key. 
HMAC_Init_ex(&ctx, key, 16, EVP_sha256(), NULL); 

    // May be called repeatedly to insert all your data. 
HMAC_Update(&ctx, data, 8); 

    // Finish HMAC computation and fetch result. 
HMAC_Final(&ctx, result, &result_len); 

    // Done with HMAC object. 
HMAC_CTX_cleanup(&ctx);