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

密码工程-大素数

时间:2023-06-01 22:22:05浏览次数:53  
标签:工程 temp state number 密码 素数 gmp mpz

任务详情

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

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

#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;
}

运行

标签:工程,temp,state,number,密码,素数,gmp,mpz
From: https://www.cnblogs.com/killerqueen4/p/17450420.html

相关文章

  • 密码工程-大素数
    任务详情在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务利用大整数库(GMP或者OpenSSL),参考《密码工程》p113伪代码实现GenerateLargePrime函数(10‘)在测试代码中产生一个在范围l=2^255至u=2^256-1内的素数。(5‘)用OpenSSL验证你产生的素数是不是正确(5’)提交......
  • 2023.6.1——软件工程日报
    所花时间(包括上课):6h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习。我了解到的知识点:1.了解了一些数据库的知识;2.了解了一些python的知识;3.了解了一些英语知识;5.了解了一些Javaweb的知识;4.了解了一些数学建模的知识;6.了解了一些计算机网络的知识;......
  • 2021级《软件工程》测试河北宏志大学学生成绩管理系统
    2021级《软件工程》开发技能测试试卷(180分钟) 河北宏志大学学生成绩管理系统(卷面成绩40分) 河北宏志大学学生成绩管理系统1、项目需求:学生管理是各大院校的管理工作中尤为重视的一项工作,它一直以来是学校管理的一项重要的衡量指标。学生管理系统的应用解决了学校日常学生......
  • 软件工程课程总结
    本学期的软件课程中,我学习了地铁站查询系统、分页查询以及团队合作和安卓端的开发,针对以上内容,我写出课程总结。当我们在构建一个完整的地铁站查询系统时,我们需要为用户构建一个友好、高效、易用、多样化的界面。更进一步, 我们可以设计并开发一个android应用程序,为用户提供更加......
  • 软件工程课程总结
    在本学期中,我参加了一门软件工程的课程,该课程包含了软件工程的基本概念和实践技术。在这篇总结中,我会详细描述我在这门课程中学到的内容,以及对本课程的反思和建议。一、学习成果 1.掌握了软件工程的基本概念和流程 在本课程中,我掌握了软件工程的基本概念,例如软件需求分析、......
  • 软件工程课程总结
    软件工程课程总结 软件工程是一门涉及软件开发过程、设计、实现、测试和维护的学科。我在这门课程中学到了很多关于软件工程的知识和实践技术,下面是我的课程总结。首先,在课程中我们了解了软件工程的发展历程、定义和原则。软件工程的发展从单机应用到分布式网络应用,其......
  • 软件工程个人总结
    这是软件工程的最后一次作业,在此写上我本学期以来的体会和总结。   从二月末至六月初,学习软件工程将近三个月的时间。从一开始的个人项目到后来结对编程再到团队项目,期间经历了太多的困难与挫折,当然也有成功收获。有时会熄灯后继续熬到一两点还在修改程序,当提交成功后心里还......
  • linux设置su和sudo为不需要密码
    一设置sudo为不需要密码 有时候我们只需要执行一条root权限的命令也要su到root,是不是有些不方便?这时可以用sudo代替。默认新建的用户不在sudo组,需要编辑/etc/sudoers文件将用户加入,该文件只能使用visudo命令,1)首先需要切换到root,su-(注意有-,这和su是不同的,在用命令"su"......
  • 软件工程-课程总结
    软件工程课程总结一、回顾课程计划(第一周的计划),进行总结开学初和现在自己的对比对于javaweb的掌握更加熟练了,能够更加快速的开发一个简易的mis系统写的代码更加优质了,有良好的扩展性和健壮性。熟悉与多人合作的流程,能较好的融入团队,进行团队合作总结这学期所学学......
  • 2023.6.1-软件工程课程总结
    回顾我的课程计划:我在开学第一周提出的计划是,达到王建民老师的最基本要求,软件工程这门课取得及格的好成绩。对于这个计划,我觉得我应该大致完成了王建民老师的最基本要求,计划的前一部分应该是做到了。关于后面一部分取得及格的好成绩,我觉得我应该也能够完成,软件工程这门课应该可以......