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

密码工程-大素数

时间:2023-06-02 18:24:26浏览次数:34  
标签:工程 temp state number 密码 素数 gmp mpz

密码工程-大素数

  1. 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务
  2. 利大整数库(GMP或者OpenSSL),参考《密码工程》p113伪代码实现GenerateLargePrime 函数
  3. 在测试代码中产生一个在范围l = 2^255至u = 2^256-1内的素数。
  4. 用OpenSSL验证你产生的素数是不是正确
  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/yycyhyhf/p/17452641.html

相关文章

  • Android通过 SharedPreference 实现用户名与密码的存储与调用
    注:Android实验课(一)的内容一、实验原理1.1实验目标编程实现用户名与密码的存储与调用。1.2实验要求设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedPreference,读取不到该用户名提示用户不存在,用......
  • 平台工程是 DevOps 的未来
    Gartner预测到2026年时,将有80%的软件工程组织会建立平台团队DevOps与平台工程DevOps是一种文化和理念。平台工程,是我们实现“谁构建、谁运行”的唯一方式。这是DevOps的核心初衷,也是后来企业级规模和云原生时代的实现基础。平台工程关注的不一定是教你怎么用工具,而是......
  • 传奇微端配置补丁密码错误,传奇pak密码错误解决方法
    这几天帮很多朋友配置GOM引擎微端服务器,配置微端其实也没有技术要求,熟能生巧,做得多了,感觉真的不难,但这两天发现了一个小问题,就是在配置登录器的时候,PAK读取规则里面,全部正确,配置微端服务器的时候,发现最下面有一些PAK补丁文件显示密码不正确,这个是什么原因导致的呢?大家看到这里就很......
  • 软件工程课程个人总结
        先说一下这学期这门课程的收获吧,本学期所学习的软件工程这门科目让我从理论上掌握软件工程的一些相关知识(大部分还是得靠自学),还有从不同的实例,让理论和实践得到了很好的结合。整一个学期下来,总的来说还是学到了很多东西的,有很多地方是值得肯定的,其实在我看来,软件工......
  • 配置VsCode的QT工程
    配置VsCode的QT工程VsCode+qmake环境(Environment):......
  • pnpm才是前端工程化项目的未来
    前言相信小伙伴们都接触过npm/yarn,这两种包管理工具想必是大家工作中用的最多的包管理工具,npm作为node官方的包管理工具,它是随着node的诞生一起出现在大家的视野中,而yarn的出现则是为了解决npm带来的诸多问题,虽然yarn提高了依赖包的安装速度与使用体验,但它依旧没有解决npm的依赖......
  • 2023.6.2——软件工程日报
    所花时间(包括上课):6h代码量(行):0行博客量(篇):1篇今天,上午学习,下午考web。我了解到的知识点:1.了解了一些数据库的知识;2.了解了一些python的知识;3.了解了一些英语知识;5.了解了一些Javaweb的知识;4.了解了一些数学建模的知识;6.了解了一些计算机网络的知识;......
  • 序列密码实验
    实验目的及要求(1)实现LFSR,寄存器位数n=10,反馈函数、初试值都自己定;(2)实现RC4,数组长度=8,密钥自己定;(3)基于实现的LFSR或RC4实现一个动态验证码生成器,每次生成6个伪随机十进制数,自己测下多少个输出后开始循环。==================================================================......
  • 岩土工程中振弦类采集仪的完整解决方案分析
    岩土工程中振弦类采集仪的完整解决方案 振弦传感器和振弦采集仪及在线监测系统形成一套完整链条的岩土工程监测案例一些岩土工程项目需要进行振动监测以确保安全和可靠性。振弦传感器和振弦采集仪是一种常用的监测设备,可以用于监测地基、桥梁和建筑物的振动特征。以下是一个......
  • 岩土工程中振弦类采集仪的完整解决方案案例
    岩土工程中振弦类采集仪的完整解决方案振弦传感器和振弦采集仪及在线监测系统形成一套完整链条的岩土工程监测案例一些岩土工程项目需要进行振动监测以确保安全和可靠性。振弦传感器和振弦采集仪是一种常用的监测设备,可以用于监测地基、桥梁和建筑物的振动特征。以下是一个振弦传......