首页 > 其他分享 >OpenSSL测试-大数

OpenSSL测试-大数

时间:2023-04-11 15:13:18浏览次数:41  
标签:11 大数 bn OpenSSL free 测试 new include BN

在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务

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

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

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

提交代码(或代码链接)和运行结果截图

运行代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/bn.h>
//20201310
int main()
{
        BN_CTX *r[3];
        BIGNUM *a;
        BIGNUM *b;
        BIGNUM *c;
        char s[512+1] = "2";
        char t[512+1] = "51e"; //1310
	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;
}


验证:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/bn.h>
//20201310
int main()
{
    BN_CTX *r[11];
    BIGNUM *bn[12];
    int i;
    const char s[11][9] = {"20201305", "20201306", "20201307", "20201308", "20201309", "20201310", "20201311", "20201312", "20201313", "20201314", "20201315"};
    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;
}


验证

标签:11,大数,bn,OpenSSL,free,测试,new,include,BN
From: https://www.cnblogs.com/hzxjkl/p/17306304.html

相关文章

  • 2023.04.11 定时测试随笔 T1
    T1数列分段SectionII传送门:洛谷P1182题意:把\(n\)个数分成\(m\)段,使\(m\)段和的最大值最小,求这个值;题解:因为题目要求最大值的最小值,很明显的一道二分答案的板子题,我们二分这个最大值,因为是区间和,我们用前缀和来维护,二分区间就是[\(sum[1]\),\(sum[n]\)]:......
  • 关于QMetaObject::invokeMethod的测试
    此函数可以用来在子线程中委托主线程执行特定函数。QMetaObject::invokeMethod默认在主线程中执行函数,除非指定连接方式为Qt::DirectConnection。以下是测试用的代码和输出结果。头文件:classMCcrt:publicQThread{Q_OBJECTpublic:MCcrt(QObject*parent=0):......
  • 字节跳动大数据架构面经 有用 看1
    1面试官:简单的做个自我介绍吧面试官,您好!我叫xxx,xxxx年x月毕业于xxx学校,xx学历,目前就职于xxx公司xxx部门,职位为:大数据开发工程师,主要从事于xxx组件、平台的开发工作。工作以来,我先后参加了xxx项目、xxx项目以及xxx项目,积累了丰富的项目经验,同时,这x个项目......
  • 大数相加
    Java实现描述:以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。publicclassSolution{publicStringsolve(Strings,Stringt){//writecodehereStringBuilderres=newStringBuilder();intcarry=0;//进......
  • 测试直播伴侣和OBS对透明度的支持哪个好?
     测试直播伴侣和OBS对透明度的支持哪个好?抖音无人直播,用抖音弹幕助手测试直播伴侣和OBS对透明度的支持哪个好?抖音无人直播,用抖音弹幕助手 ​测试地址1​测试地址2 ......
  • 安全测试前置实践1-白盒&黑盒扫描
    作者:京东物流 陈维一、引言G.J.Myers在《软件测试的艺术》中提出:从心理学角度来说,测试是一个为了寻找错误而运行程序的过程。那么安全测试则是一个寻找系统潜在安全问题的过程,通过测试手段发现系统中可能存在的安全问题和风险,分析并进行优化,保障系统的安全质量。从应用安全维度出......
  • Jmeter在linux环境下会出现 html测试报告 响应结果为空得问题
    1.在jmeter_home/bin/jmeter.properties文件中修改配置jmeter.save.saveservice.response_data=truejmeter.save.saveservice.samplerData=true 2.在user.properties文件中追加配置jmeter.save.saveservice.output_format=xmljmeter.save.saveservice.response_data=truej......
  • java大数加法的一种思路
    packageorg.example;importjava.util.ArrayList;importjava.util.List;importjava.util.Scanner;classSuperNum{publicList<Integer>numList;/***成员变量的set方法*@paramnumList*/publicvoidsetNumList(List<Inte......
  • 测试端口连通性
    下面以Linux平台为例,讲述测试TCP和UDP端口的方法。有两个命令可以用来测试端口,一个是telnet,一个是nc,但telnet只能用于测试TCP端口,而nc即可用于测试TCP端口也可用来测试UDP端口。【telnet命令的用法】telnetIPport例如:[root@localhost]#telnet192.168.0.18120060Trying192.1......
  • 浅析pcba测试
      说起PCB大家都很熟悉,那大家知道什么是PCBA吗?它是指将PCB板进行加工,支撑一个成品线路板。而PCBA测试就是对线路板进行一个功能测试、电路测试。那么为什么一定要对PAB板进行检测呢?它有什么重要性?安徽英特丽小编带大家分析一下 PCBA加工的过程十分复杂,其中包括PCB板制作、......