LINUX.ORG.RU

SHA256 хеш, в чем проблема


0

1

Вот, что-то туплю с утра, не могу понять что не так:

#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

★★★★★
$ echo 1234567890 > 1
$ sha256sum 1
4795a1c2517089e4df569afd77c04e949139cf299c87f012b894fccf91df4594  1
$ echo -n 1234567890 > 1
$ sha256sum 1
c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646  1
damnemall
()
Ответ на: комментарий от damnemall

Спасибо, значит ошибки нет, пойду переписывать юнит-тесты.

XVilka ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.