• OpenSSL测试大数


    1. 基于OpenSSL的大数库计算2的N次方,N为你学号的后四位(5‘)

    2. 基于OpenSSL的大数库计算你以及前面5位同学和后面5位同学的8位学号的乘积,N为你学号的后四位(5‘)

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <openssl/bn.h>
    
    int main()
    {
        BIGNUM * bn_rlt;
        BIGNUM * bn_1;
        BIGNUM * bn_1301;
        BN_CTX * ctx;
        char* show;
    
        ctx=BN_CTX_new();
        bn_rlt=BN_new();
        bn_1=BN_new();
        bn_1301=BN_new();
    
        BN_dec2bn(&bn_rlt,"1");
        BN_dec2bn(&bn_1,"1");
        BN_dec2bn(&bn_1301,"20191301");
    
        for(int i=1301;i<=1305;i++){
            BN_mul(bn_rlt,bn_rlt,bn_1301,ctx);
            BN_add(bn_1301,bn_1301,bn_1);
        }
        for(int i=1228;i<=1232;i++){
            BN_mul(bn_rlt,bn_rlt,bn_1301,ctx);
            BN_add(bn_1301,bn_1301,bn_1);
        }
    
        show=BN_bn2dec(bn_rlt);
        printf("b=%s\n",show);
        BN_free(bn_rlt);
        BN_free(bn_1);
        BN_free(bn_1301);
        BN_CTX_free(ctx);
        return 0;
    }
    
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <openssl/bn.h>
    
    int main()
    {
        BIGNUM * bn_rlt;
        BIGNUM * bn_2;
        BN_CTX * ctx;
        char* show;
        ctx=BN_CTX_new();
        bn_rlt=BN_new();
        bn_2=BN_new();
        BN_dec2bn(&bn_rlt,"1");
        BN_dec2bn(&bn_2,"2");
        for(int i=0;i<1301;i++){
            BN_mul(bn_rlt,bn_rlt,bn_2,ctx);
        }
        show=BN_bn2dec(bn_rlt);
        printf("%s\n",show);
        BN_free(bn_rlt);
        BN_free(bn_2);
        BN_CTX_free(ctx);
        return 0;
    }
    

    用Python或bc命令验证计算的正确性(5’)

  • 相关阅读:
    路由相关题目解析
    Centos7.6系统安装
    组播(二)---IGMP
    那些瞬间击中我的句子
    组播(一)
    记一次安装浪潮服务器的经历
    HP打印机驱动安装方法总结
    潍坊矿场ubuntu18 server 基本环境配置常用操作
    docker-zabbix
    MySQL 8.x 账号管理
  • 原文地址:https://www.cnblogs.com/20191301lhq/p/16262335.html
Copyright © 2020-2023  润新知