2011-09-18 15 views
5

Estoy portando una aplicación PHP a C++. La aplicación PHP está usando esta función:¿Cuál es el equivalente en C++ de la función hash_hmac de PHP?

hash_hmac - Genera un valor cifrado con clave usando el método HMAC

Si tengo este código, lo que en realidad está haciendo?

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

Sé que algunos encripta los datos usando sha256 y mi clave, pero ¿cómo puedo realizar esto en C++?

Encontré las bibliotecas hmac y sha2, pero no estoy seguro si son lo que necesito.

+0

¿Por qué quiere que el código PHP puerto de código C++? – daGrevis

+1

ganancia de rendimiento – user63898

Respuesta

16

Consideraría buscar en OpenSSL, una biblioteca criptográfica portátil y completa (a pesar de su nombre, no solo hace SSL). Tiene un HMAC library que seguramente puede envolver para obtener una función similar.

He aquí un ejemplo de cómo usar la biblioteca OpenSSL HMAC', tomado de another question on StackOverflow (mina de anotaciones):

// 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); 
Cuestiones relacionadas