我試圖確認/得到hex'd mpi值的無符號整數(基10 /十進制)值。我使用下面的代碼:打印MPI的無符號整數(基10 /十進制)值
#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
我會在「結果:」行打印的實際unsigned int類型(基於10 /十進制)值。
私鑰是從我試圖使用的Off-the-Record Pidgin插件中取得的。
編輯:
有誰能夠確認實際unsigned int類型(基數爲10 /十進制)值應
我大概可以更新程序來創建用這個值加密一個新的mpi,看看HEX的值是否與我已有的相同。我今天晚些時候會這樣做。
編輯2:
,所以我嘗試做以下印刷上述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
編輯3:
我更新了帖子了一下,基本上我要打印的base10十進制值由gcrypt庫生成的十六進制值。我正在尋找這個值來確認我讀取這些值的實現。我正在尋找一個gcrypt函數來實現這一點。看來gcrypt不支持這個?
所以......你正在寫一個加密庫,並被卡在將十六進制值轉換爲十進制值? – Shark 2013-02-28 11:41:09
我更新了帖子,基本上我試圖獲取由gcrypt庫生成的hex'd值的基10 /十進制值。 – invalidusername 2013-02-28 19:53:48