1代码
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <openssl/bn.h> int main() { BN_CTX *r[3]; BIGNUM *a; BIGNUM *b; BIGNUM *c; char s[512+1] = "2"; char t[512+1] = "4bd"; char *x; r[0] = BN_CTX_new(); a = BN_new(); b = BN_new(); c = BN_new(); BN_hex2bn(&a, s); BN_hex2bn(&b, t); BN_exp(c, a, b, r[0]);//r=pow(a,b) x = BN_bn2dec(c); puts(x); BN_free(a); BN_free(b); BN_free(c); BN_CTX_free(r[0]); free(x); return 0; }
2.代码
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <openssl/bn.h> int main() { BN_CTX *r[11]; BIGNUM *bn[12]; int i; const char s[11][9]={"20191203","20191204","20191205","20191206","20191207","20191208","20191209","20191210","20191211","20191212","20191213"}; char* out; char t[2]="1"; for(i=0;i<11;i++){ bn[i]=BN_new(); BN_dec2bn(&bn[i],s[i]); r[i] = BN_CTX_new(); } bn[11]=BN_new(); BN_dec2bn(&bn[11],t); for(i=0;i<11;i++){ BN_mul(bn[11],bn[11],bn[i],r[i]); } out= BN_bn2dec(bn[11]); puts(out);//打印出字符串 for(i=0;i<11;i++){ BN_free(bn[i]); BN_CTX_free(r[i]); } BN_free(bn[i]); free(out); return 0; }
结果均与上次gmb测试一致
验证正确