unsigned char *SHA1(const unsigned char *d, unsigned long n,
unsigned char *md);
Согласно документации, если md==0
, возвращаемое значение равно md.Если md==0
, он помещается в статический массив, так что вам не нужно об этом беспокоиться.Я написал следующую партию, чтобы доказать концепцию.
#include <openssl/sha.h>
#include <string.h>
#include <stdio.h>
void print_hash( const unsigned char* c )
{
printf( "The hash is: " );
int index;
for(index = 0; index < SHA_DIGEST_LENGTH; index++)
printf( "%X", *c++ );
printf( "\n" );
}
int main(int argc, char* argv[])
{
unsigned char hash[SHA_DIGEST_LENGTH];
unsigned char str[100];
scanf( "%s", str );
unsigned char* sha = SHA1(str, strlen((char*)str), hash);
print_hash( hash );
print_hash( sha );
print_hash( SHA1(str, strlen((char*)str), 0) );
}
Результаты:
some example input
The hash is: EB875812858D27B22CB2B75F992DFFADC1B05C66
The hash is: EB875812858D27B22CB2B75F992DFFADC1B05C66
The hash is: EB875812858D27B22CB2B75F992DFFADC1B05C66
Как хранится хеш, зависит от вас.