2011-02-26 26 views

Respuesta

11

Ha marcado OpenSSL. Yo mismo no lo he usado, pero la documentación dice que lo admite.

Aquí está la lista de few more implementations.

código Ejemplo

md = EVP_get_digestbyname("sha512"); 
EVP_MD_CTX_init(&mdctx); 
EVP_DigestInit_ex(&mdctx, md, NULL); 
EVP_DigestUpdate(&mdctx, mess1, strlen(mess1)); 
EVP_DigestUpdate(&mdctx, mess2, strlen(mess2)); 
EVP_DigestFinal_ex(&mdctx, md_value, &md_len); 
EVP_MD_CTX_cleanup(&mdctx); 
+4

Heh. Me ganaste porque "OpenSSL es compatible con SHA512". tiene solo 24 caracteres y las respuestas deben ser de al menos 30. –

+0

¿Puede vincular a la documentación de la función que puedo usar para calcular el hash? –

+0

Se agregó un código de ejemplo a la respuesta. – Zimbabao

0

he tenido un gran éxito con este:

Secure Hash Algorithm (SHA)

licencia BSD. Cubre SHA-1, SHA-224, SHA-256, SHA-384 y SHA-512. Tiene buenas funciones de ayudador para reducir los pasos en casos simples:

SHA256_Data(const sha2_byte* data, size_t len, char digest[SHA256_DIGEST_STRING_LENGTH]) 

También tiene muchas opciones de ajuste de rendimiento.

5

Estoy usando Botan para diversos fines criptográficos. Tiene muchos tipos de algoritmos SHA (-512).

Cuando estaba buscando en C++ crypto libraries también encontré Crypto++. El estilo de la API Botan fue más directo para mí, pero ambas bibliotecas son sólidas y maduras.

+0

¿Sabes dónde están los documentos sha512 para Botan? –

+0

@ Graco En muchos casos, no hay documentos específicos para algunos algoritmos. La razón es que cada algoritmo se implementa como un filtro que puede usarse de manera muy similar a otros. Si está interesado en parámetros específicos, busque el algoritmo en wikipedia porque la implementación debe ser canónica. Los comentarios en los encabezados también pueden ayudar. El [manual] (http://botan.randombit.net/manual/) proporciona información sobre el uso de los filtros. –

4

Verificar this code. Es completamente portátil y no necesita configuraciones adicionales. Solo STL sería suficiente. Usted sólo necesita declarar

#include "sha512.hh" 

y luego usar las funciones

sw::sha512::calculate("SHA512 of std::string") // hash of a string, or 
sw::sha512::file(path) // hash of a file specified by its path, or 
sw::sha512::calculate(&data, sizeof(data)) // hash of any block of data 

siempre que los necesite. Su valor de retorno es std::string

Cuestiones relacionadas