Вот, что-то туплю с утра, не могу понять что не так:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/sha.h>
void sha256_hash_string(unsigned char *string, char outputBuffer[65])
{
int i = 0;
unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256_CTX sha256;
SHA256_Init(&sha256);
SHA256_Update(&sha256, string, strlen((char *)string));
SHA256_Final(hash, &sha256);
printf("raw hash: %s\n", hash);
for(i = 0; i < SHA256_DIGEST_LENGTH; i++) {
sprintf(outputBuffer + (i * 2), "%02x", hash[i]);
}
outputBuffer[64] = 0;
}
int main()
{
char outbuf[65];
sha256_hash_string("1234567890", outbuf);
printf("SHA256 sum : %s\n", outbuf);
printf("need to be : 4795a1c2517089e4df569afd77c04e949139cf299c87f012b894fccf91df4594\n");
return EXIT_SUCCESS;
}
gcc -o sha_test sha_test.c -lcrypto
./sha_test:
SHA256 sum : c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646
need to be : 4795a1c2517089e4df569afd77c04e949139cf299c87f012b894fccf91df4594
В чем, собственно, ошибка? Второе значение получено:
echo "1234567890" > test.bin
sha256sum test.bin