Sha256 в программе C, преобразование символов в байты - PullRequest
0 голосов
/ 24 марта 2020

У меня есть функция c, которая возвращает массив без знака

unsigned char var[]="600ffe422b4e00731a59557a5cca46cc183944191006324a447bdb2d98d4b408";

массив char содержит шестнадцатеричную строку. Я хочу, чтобы sh этот массив символов, использующий функцию sha256

unsigned char *d = SHA256(var, strlen(var),0);

, купил его, чтобы он выдавал неправильный вывод, если только я вручную не закодировал его таким образом

unsigned char var[] = {0x60,0x0f,0xfe,0x42,0x2b,0x4e,0x00,0x73,0x1a,0x59,0x55,0x7a,0x5c,0xca,0x46,0xcc,0x18,0x39,0x44,0x19,0x10,0x06,0x32,0x4a,0x44,0x7b,0xdb,0x2d,0x98,0xd4,0xb4,0x08};

Что я попробовал:

#include <stdio.h>
#include <string.h>
#include <openssl/sha.h>
 #include <openssl/ripemd.h>

int main (void) {

 unsigned char var[] = {0x60,0x0f,0xfe,0x42,0x2b,0x4e,0x00,0x73,0x1a,0x59,0x55,0x7a,0x5c,0xca,0x46,0xcc,0x18,0x39,0x44,0x19,0x10,0x06,0x32,0x4a,0x44,0x7b,0xdb,0x2d,0x98,0xd4,0xb4,0x08}
unsigned char *d = SHA256(var, strlen(var), 0);

int i;
for (i = 0; i < SHA256_DIGEST_LENGTH; i++)
    printf("%02x", d[i]);
putchar('\n');

как программно преобразовать этот

unsigned char var[]="600ffe422b4e00731a59557a5cca46cc183944191006324a447bdb2d98d4b408";

в этот

unsigned char var[]{0x60,0x0f,0xfe,0x42,0x2b,0x4e,0x00,0x73,0x1a,0x59,0x55,0x7a,0x5c,0xca,0x46,0xcc,0x18,0x39,0x44,0x19,0x10,0x06,0x32,0x4a,0x44,0x7b,0xdb,0x2d,0x98,0xd4,0xb4,0x08}

на c языке и затем передать его функции sha256

...