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

OpenSSL测试-大数-2

时间:2023-05-10 09:23:25浏览次数:42  
标签:16 bn 大数 OpenSSL 测试 include BN

任务详情

0. 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务
1. 基于OpenSSL的大数库计算1000内的素数的乘积(5‘)
2. 基于OpenSSL的大数库计算你以及后面15位同学的8位学号(数字)的乘积(5‘)
3. 用Python或bc命令验证计算的正确性(5’)
4.  **提交代码(或代码链接)和运行结果截图**

 1. 基于OpenSSL的大数库计算1000内的素数的乘积

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/bn.h>
 
int is_prime(int num)
{
    if (num < 2)
        return 0;
    else if (num == 2)
        return 1;
    else if (num % 2 == 0)
        return 0;
    else
    {
        int i;
        for (i = 3; i <= num / 2; i += 2)
        {
            if (num % i == 0)
                return 0;
        }
        return 1;
    }
}
 
int main()
{
    BIGNUM *result = BN_new();
    BIGNUM *num = BN_new();
    BN_CTX *r = BN_CTX_new();
    int i;
 
    BN_set_word(result, 1);
 
    for (i = 2; i < 1000; i++)
    {
        if (is_prime(i))
        {
            BN_set_word(num, i);
            BN_mul(result, result, num, r);
        }
    }
 
    char *result_str = BN_bn2dec(result);
    printf("%s\n", result_str);
 
    BN_free(result);
    BN_free(num);
    BN_CTX_free(r);
    OPENSSL_free(result_str);
 
    return 0;
}

运行结果

 

 

2. 基于OpenSSL的大数库计算你以及后面15位同学的8位学号(数字)的乘积(5‘)
代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/bn.h>
//20201208
int main()
{
    BN_CTX *r[16];
    BIGNUM *bn[17];
    int i;
    const char s[16][5] = {"20201208", "20201209", "20201210", "20201211", "20201212", "20201213", "20201214", "20201215", "20201216", "20201217", "20201218",“20201219”,“20201220”,“20201221”,“20201222”,“20201223”};
    char *out;
    char t[2] = "1";
    for (i = 0; i < 16; i++)
    {
        bn[i] = BN_new();
        BN_dec2bn(&bn[i], s[i]);
        r[i] = BN_CTX_new();
    }
    bn[16] = BN_new();
    BN_dec2bn(&bn[16], t);
    for (i = 0; i < 16; i++)
    {
        BN_mul(bn[16], bn[16], bn[i], r[i]);
    }
    out = BN_bn2dec(bn[16]);
    puts(out); //打印出字符串
    for (i = 0; i < 16; i++)
    {
        BN_free(bn[i]);
        BN_CTX_free(r[i]);
    }
    BN_free(bn[i]);
    free(out);
    return 0;
}

 

 

验证

 

标签:16,bn,大数,OpenSSL,测试,include,BN
From: https://www.cnblogs.com/syf0105/p/17386886.html

相关文章

  • 大数库GMP测试
    大数库GMP测试20201331黄文刚一、任务详情0.在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务用自己8位学号建两个文件夹xxxxxxxxsrc,xxxxxxxx,到GMP官网https://gmplib.org/下载最新代码到201x1xxxsrc,编译代码并把GMP库安装到201x1xxx文件夹。(5')基于GMP的大数库编......
  • 大数库GMP测试
    在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务用自己8位学号建两个文件夹xxxxxxxxsrc,xxxxxxxx,到GMP官网https://gmplib.org/下载最新代码到201x1xxxsrc,编译代码并把GMP库安装到201x1xxx文件夹。(5')基于GMP的大数库编写测试代码测试大数运算,计算10000内的素数的乘积......
  • OpenSSL测试-大数
    OpenSSL测试-大数20201331黄文刚0.在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务基于OpenSSL的大数库计算1000内的素数的乘积(5‘)基于OpenSSL的大数库计算你以及后面15位同学的8位学号(数字)的乘积(5‘)用Python或bc命令验证计算的正确性(5’)提交代码(或代码链接)......
  • 入门1-pytest测试框架功能及常用第三方插件介绍
    安装1. 安装Python2. 安装pytest: pipinstall-Upytest3. 安装常用插件pipinstall-rrequirement.txtPS: 常用插件:pytestallure-pytestrequestsPyYAMLpandasopenpyxljsonpathrequests_toolbeltPrettyTablepytest-htmlpytest-xdist https://docs.py......
  • 入门8-Pytest部分测试用例的前后置(fixture)(2-conftest.py结合)
    conftest.py文件专门用来存放fixture的文件,名称固定不能修改。conftest.py中的所有方法在调用时都不需要导包一个用例可以同时调用多个conftest.py中的多个方法一般conftest.py中的方法autouse=True, 自动执行。conftest.py放在最外层,使用scope="session"时,整个项目开头执......
  • 编程打卡:面向对象程序设计测试
    面向对象程序设计测试#include<iostream>#include<iomanip>usingnamespacestd;classPoint{protected:doublex,y;public:Point(doublea=0,doubleb=0):x(a),y(b){cout<<"Pointconstructorcalled\n";......
  • 【数据库测试】【shell脚本】查询同一个SQL执行多次,并统计每次耗时
    场景说明在数据库查询中会常见coldrun与hotrun,hotrun是指将同一个SQL连续运行多遍。运行脚本创建一个run.sh直接复制如下脚本-注意修改数据库的连接IP与密码等-queries2.sql存放查询的SQL,请将queries2.sql文件与run.sh放在同一个目录下,若不在同一个目录,注意改SQL的文件......
  • 带你完成数据库的clickbench性能测试(小白都能看懂)
    clickbench官网链接:https://benchmark.clickhouse.com/如下采用的数据库为分析型数据库支持MySQL协议,其他所有的数据库操作方法均类似测试背景利用clickhouse的clickbench测试数据与查询SQL对AtomData进行了性能测试,所有的测试方法均与其他clickbench上的其他产品一致。预期......
  • win11虚拟机安装测试
    1.环境本地环境:VmwareEsxi6.5其他适用环境:Vmware,kvm2.安装遇到报错:此电脑不符合最低安装要求  解决方法:shift+f10唤起cmdcmd界面输入regedit打开注册表编辑器 在HKEY_LOCAL_MACHINE\SYSTEM\Setup右击新建一个项,命名为LabConfig,在该项右击新建三个DWORD(32位)......
  • VOC标签格式转yolo格式并划分训练集和测试集
    VOC标签格式转yolo格式并划分训练集和测试集经常从网上获取一些目标检测的数据集资源标签的格式都是VOC(xml格式)的,而yolov5训练所需要的文件格式是yolo(txt格式)的,就需要对xml格式的标签文件转换为txt文件。同时训练自己的yolov5检测模型的时候,数据集需要划分为训练集和验证集。......