Хэширование G-wan C Sha1

У меня возникла небольшая проблема с работой функции sha1 в G-WAN.

По сути, у меня есть строка, которую я хочу хешировать, я новичок в C в целом, поэтому любые указатели будут отличными.

Это строка, которую я пытаюсь хешировать sha1, я пробовал несколько подходов, но я не уверен, что делаю неправильно.

u8 *input = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";

У меня почти есть веб-сокеты, работающие с G-wan, и последнее, что нужно сделать, это заставить эту функцию sha1 сотрудничать со мной.

Документация по функции G-wans sha1 ниже

// u8 dst[20]; // the resulting 160-bit hash
// sha1_t ctx;
// sha1_init(&ctx);
// int i = 10;
// while(i--)
//    sha1_add(&ctx, data[i].ptr, data[i].len);
// sha1_end(&ctx, dst);

typedef struct { u8 x[220]; } sha1_t;
void sha1_init(sha1_t *ctx);
void sha1_add (sha1_t *ctx, u8 *src, int srclen);
void sha1_end (sha1_t *ctx, u8 *dst);
// a wrapper on all the above SHA-160 calls
void sha1(u8 *input, int ilen, u8 *dst);

Ссылка на API http://gwan.com/api

Если бы кто-нибудь мог бросить мне здесь кость, это сделало бы мои последние часы с C немного снисходительными.


person tomek    schedule 06.11.2012    source источник
comment
Можете ли вы предоставить строки исходного кода, связанные с вызовом хеш-функции sha1? А также сообщения об ошибках или журналы, которые вы видите, а также описание поведения программного обеспечения?   -  person Richard Chambers    schedule 06.11.2012
comment
Я бы не смог предоставить источник, не говоря уже о том, чтобы найти его TBH. Единственная ошибка в журналах, которая у меня есть, это ошибка в web.c и слишком мало аргументов для функции sha1. Затем приводит к сбою страницы с подачей 404. Спасибо за ответ ценю это. :) Только что получил еще одну ошибку: последний аргумент несовместим с указателем.   -  person tomek    schedule 06.11.2012
comment
Я немного смущен тем, как вы ожидаете внести изменения в исходный код, которые вы не можете предоставить. Журналы указывают, что что-то не так с предоставленными аргументами. Я не могу сказать, является ли это ошибкой компиляции или ошибкой времени выполнения. Без дополнительной информации о вашей среде и поведении программного обеспечения я не могу вам помочь. Наличие фактических сообщений об ошибках и журналов также было бы удобно.   -  person Richard Chambers    schedule 06.11.2012
comment
В G-WAN v3.6 исправлена ​​ошибка расчета SHA, вот временная шкала, которая будет опубликована: исправлен сбой sha2(), нарушающий функцию, спасибо Ричарду за отчет. Кажется, это не связано с этим вопросом, но может быть полезно знать, прежде чем вы столкнетесь с этой проблемой.   -  person Gil    schedule 07.11.2012


Ответы (1)


Вот пример использования функции sha1.

u8 input[] = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
u8 result[20];

sha1(input, sizeof(input) - 1, result);
xbuf_xcat(get_reply(argv), "SHA1 Result: %20B", result);

Результат двоичный, поэтому вам нужно преобразовать его в B64 или HEX, чтобы сделать его читабельным. «%B» — это преобразование B64 в G-WAN. «% 20B» указывает ему преобразовать первые 20 байтов.

Результат:

Результат SHA1: Kfh9QIsMVZcl6xEPYxPHzW8SZ8w=

person Richard Heath    schedule 06.11.2012