jaipoorna Ответов: 1

В OpenSSL BIGNUM BN_mod()


Неправильный выход для 141 mod 8 ??
Я просто пытаюсь прочитать входные данные из файла, а затем применить мод
с 8. можете ли вы, пожалуйста, объяснить мне, где я ошибаюсь ?

Что я уже пробовал:

#include<stdio.h>
#include<openssl/bn.h>

BIGNUM * read_f(const char *filename)
{
    FILE *fp;
    char text[700];
    fp=fopen(filename,"r");
    fgets(text,700,fp);
    //fclose(fp);
    //char *point=text;
    BIGNUM*a =BN_new();
    BN_hex2bn(&a, (const char *) text);
    fclose(fp);
    return a;
}
void main(){
 const char *filename="input/tA.txt";
    BIGNUM *p=  BN_new();
    p=read_f(filename);
    BN_print_fp(stdout,p);
    printf("\n");
	BIGNUM *tmp=BN_new();
	BIGNUM *val=BN_new();
	BN_set_word(val,8);
      
	//BIGNUM *v=BN_new();
	//BN_set_word(v,1);
 	BN_CTX *ctx=BN_CTX_new();
        //calculating mod value
  	BN_mod(tmp,p,val,ctx);	
	BN_print_fp(stdout,tmp);
	printf("\n");
 	//calculati
 	// BN_mod_mul(tmp,p,v,val,ctx);
	//BN_print_fp(stdout,tmp);
	//printf("\n");
}

1 Ответов

Рейтинг:
0

CPallini

Это прекрасно работает, конечно, попробуйте:

#include <openssl/bn.h>
int main()
{
  BIGNUM *b1=BN_new();
  BIGNUM *b2=BN_new();
  BIGNUM *b3=BN_new();
  BN_set_word(b1,141);
  BN_set_word(b2,8);
  BN_CTX *ctx=BN_CTX_new();

  BN_mod(b3,b1,b2,ctx);
  BN_print_fp(stdout,b3);

  BN_free(b1);
  BN_free(b2);
  BN_free(b3);
  BN_CTX_free(ctx);

  return 0;
}