Я пытаюсь подтвердить/получить значение unsigned int (base 10/decimal) значения hexdd mpi. Я использую следующий код:Печать unsigned int (базовое 10/десятичное) значение MPI
#include <gcrypt.h>
#include <stdio.h>
static gcry_mpi_t privkey = NULL;
int main(){
char *parmstr = "48BFDA215C31A9F0B226B3DB11F862450A0F30DA";
printf("starting program\n");
gcry_mpi_scan(&privkey, GCRYMPI_FMT_HEX, (char *)parmstr, 0, NULL);
printf("printing hashed (?) mpi\n");
gcry_mpi_dump(privkey);
printf("\n");
size_t gablen;
unsigned char *result;
/* get length */
gcry_mpi_print (GCRYMPI_FMT_USG, NULL, 0, &gablen, privkey);
result = gcry_malloc_secure(gablen);
/* get actual value */
gcry_mpi_print (GCRYMPI_FMT_USG, result, gablen, NULL, privkey);
/* print actual value */
printf("result: %s\n", result);
printf("finished\n");
}
и я получаю следующий результат:
$ ./foo
starting program
printing hashed (?) mpi
48BFDA215C31A9F0B226B3DB11F862450A0F30DA
result: H¿Ú!\1©ð²&³ÛøbE
0Ú
finished
Я бы «результат:» строки для печати фактических неподписанных Int (база 10/десятичных) стоимость.
Закрытый ключ берет с подключаемого модуля Off-The-Record Pidgin, с которым я пытаюсь работать.
EDIT:
кто-нибудь может подтвердить, что фактические неподписанные Int (база 10/десятичной) значение должно быть
Я мог бы обновить программу для создания новый mpi в gcrypt с этим значением и посмотреть, совпадает ли значение HEX с тем, что у меня уже есть. Я сделаю это позже сегодня.
EDIT 2:
Так что я пытаюсь сделать следующее, чтобы напечатать значение HEX в INT значения, упомянутого выше. Что-то происходит не так:
gcry_mpi_t cript_prime;
char buffer[50] = {0};
char number[50] = {0};
cript_prime = gcry_mpi_new(50);
strcpy(number,"415325779662433871844955547383752003988573073626");
gcry_mpi_scan(&cript_prime,GCRYMPI_FMT_USG,number,sizeof(number),NULL);
gcry_mpi_print(GCRYMPI_FMT_USG,buffer,sizeof(buffer),NULL,cript_prime);
printf("The number tested is: %s\n",buffer);
printf("trying to convert to HEX\n");
/* get actual value */
gcry_mpi_print (GCRYMPI_FMT_HEX, buffer, sizeof(buffer), NULL, cript_prime);
/* print actual value */
printf("result: %s\n", buffer);
Выход:
result: 48BFDA215C31A9F0B226B3DB11F862450A0F30DA
The number tested is: 415325779662433871844955547383752003988573073626
trying to convert to HEX
result: 415325779662433871844955547383752003988573073626
EDIT 3:
Я обновил пост немного, в основном я пытаюсь напечатать значение десятичного base10 шестнадцатеричного значения, которое генерируется библиотекой gcrypt. Я ищу это значение, чтобы подтвердить реализацию, которую я сделал для чтения этих значений. Я искал функцию gcrypt для достижения этой цели. Кажется, что gcrypt не поддерживает это?
Итак ... вы пишете крипто lib и застряли на преобразовании шестнадцатеричного значения в десятичное значение? – Shark
Я обновил сообщение, в основном, я пытаюсь получить базовое 10/десятичное значение значения hex'd, которое генерируется библиотекой gcrypt. – invalidusername