首页 > 其他分享 >密码工程-大素数

密码工程-大素数

时间:2024-06-09 19:10:38浏览次数:12  
标签:工程 temp state number 密码 素数 gmp mpz

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

  1. 利大整数库(GMP或者OpenSSL),参考《密码工程》p113伪代码实现GenerateLargePrime 函数(10‘)
  2. 在测试代码中产生一个在范围l = 2^255至u = 2^256-1内的素数。(5‘)
  3. 用OpenSSL验证你产生的素数是不是正确(5’)
  4. 提交代码和运行结果截图

代码

利用大整数库(GMP或者OpenSSL),实现 GenerateLargePrime 函数,输入:l(素数所在范围的下界)、u(素数所在范围的上界),输出:p(一个在l,…,u区间内的随机素数
image

#include <gmp.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// Generate a random large prime number between lower and upper bounds
void GenerateLargePrime(mpz_t p, mpz_t l, mpz_t u) {
    mpz_t temp;
    mpz_init(temp);

    gmp_randstate_t state;
    gmp_randinit_default(state);
    gmp_randseed_ui(state, time(NULL));

    do {
        mpz_urandomm(temp, state, u); // Generate a random number between 0 and u
        mpz_add(temp, temp, l);       // Add l to the random number to get a number between l and u
        mpz_nextprime(p, temp);       // Find the next prime number after temp
    } while (mpz_cmp(p, u) > 0);    // Repeat until the prime number is within the range [l, u]

    mpz_clear(temp);
    gmp_randclear(state);
}

int main() {
    mpz_t l, u, p;
    mpz_init(l);
    mpz_init(u);
    mpz_init(p);

    mpz_set_str(l, "57896044618658097711785492504343953926634992332820282019728792003956564819968", 10); // Set lower bound 2^255
    mpz_set_str(u, "115792089237316195423570985008687907853269984665640564039457584007913129639935", 10); // Set upper bound 2^256-1

    GenerateLargePrime(p, l, u);

    gmp_printf("Large prime: %Zd\n", p);

    mpz_clear(l);
    mpz_clear(u);
    mpz_clear(p);

    return 0;
}

运行截图

image

标签:工程,temp,state,number,密码,素数,gmp,mpz
From: https://www.cnblogs.com/20211115fyq/p/18239890

相关文章

  • 应聘Java开发工程师应具备的能力有哪些?
    1.熟悉J2EE主流开发框架,如Spring、SpringBoot、MyBatis、MyBatisplus、SSH等主流框架,有独立开发项目、实际应用经验。Hibernate-ORM框架,用于对象和关系型数据库之间的映射。Dubbo-阿里巴巴开源的分布式服务框架,用于构建SOA服务化架构的高性能RPC通信框架。2.熟悉Oracl......
  • 记一次密码重置之token参数可逆练习及思路技巧
    杂个人漏洞实战练习记录密码重置之token参数可逆文章目录杂个人漏洞实战练习记录前言一、实验过程:1.首先访问页面,如下图所示:2.分别重置用户aaaa,admin,bbb三个用户密码,通过抓包查看数据并分析,如下图所示:3.分析:aaaa,bbb重置密码分别带有32位加密的key,初步猜测位md5加......
  • 使用maven搭建父工程与子工程
    父/子工程的作用:1.依赖管理2.配置信息共享3.模块化4.版本控制5.提高重用性可维护性 什么是dependencyManagement:maven中的一个元素,用于集中管理项目中的依赖版本解决了多个子模块中重复配置的问题,可有效减少maven的版本冲突问题使用dependencyManagement后,无需在子模块......
  • 【计算机毕业设计】ssm711冀中工程技师校园网站设计与实现+jsp
    使用旧方法对冀中工程技师学院网站的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在冀中工程技师学院网站的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的冀中工程技师学院网站对字典管理、......
  • ChatGPT Prompt技术全攻略-探索篇:前沿Prompt工程技术
    系列篇章......
  • ERP的管理思想二之体现精益生产、敏捷制造和并行工程的思想ERP支持对混合型生产方式的
    2.体现精益生产、敏捷制造和并行工程的思想ERP支持对混合型生产方式的管理,其管理思想表现在两方面:一是“精益生产LP”,即企业按大批量生产方式组织生产时,把客户、销售代理商、供应商、协作单位纳入生产体系,企业同其销售代理、客户和供应商的关系已不再是简单的业务往来关系,而是利......
  • 打卡信奥刷题(67)用Scratch图形化工具信奥P1125 [NOIP2008 提高组] 笨小猴,写了一个好用
    [NOIP2008提高组]笨小猴题目描述笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn......
  • 软件工程第一章习题(附答案)
    一.填空题1. (填空题)在IEEE定义中,______是开发、运行、维护和修复软件的系统方法。正确答案:(1)软件工程2. (填空题)按工程化的原则和方法组织软件开发工作是有效的,是摆脱______的一条重要出路。正确答案:(1)软件危机3. (填空题)定义______是程序、数据及其相关......
  • 作为嵌入式/软件开发工程师你需要知道的东西
    大型软件开发的基本素养中国科学技术大学软件开发规范软件开发规范(试行版)(ustc.edu.cn) 清华软件工程样张标题(tup.com.cn)软件工程这个概念,并将其定义为“为了经济地获得可靠的和能在实际机器上高效运行的软件,而建立和使用的健全的工程规则”(1)将系统化的、严格约......
  • 基于单片机超市存物箱存包柜储物柜管理密码锁系统
    **单片机设计介绍,基于单片机超市存物箱存包柜储物柜管理密码锁系统文章目录一概要二、功能设计设计思路三、软件设计原理图五、程序六、文章目录一概要  基于单片机超市存物箱存包柜储物柜管理密码锁系统的概要可以从以下几个方面进行阐述:一、设计背景......