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

密码工程-大素数

时间:2024-06-14 11:44:16浏览次数:19  
标签:prime 工程 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. 提交代码和运行结果截图

一、代码
首先
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;
}

二、结果及验证

  1. 结果

image

  1. 验证

image

标签:prime,工程,temp,state,number,密码,素数,gmp,mpz
From: https://www.cnblogs.com/Vicky-Peng/p/18247536

相关文章

  • 运维shell脚本之测试mysql密码正确与否
    shell脚本实战:测试mysql密码正确与否在迁移过程中,常有批量迁移数据库的情况,因此在割接前,需要批量测试一次割接后的数据库信息是否配置正常,故写了一个shell脚本用于测试数据库密码是否正确有误,具体步骤如下:测试前,需要测试当前服务器是否已安装mysql,可通过命令进行测试:mysq......
  • SSH实践生成密码
    $ssh-keygen-trsa-P''-f~/.ssh/id_rsa$cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys$chmod0600~/.ssh/authorized_keys-t:指定生成密钥类型(rsa、dsa、ecdsa等)-P:指定passphrase,用于确保私钥的安全-f:指定存放密钥的文件(公钥文件默认和私钥同目录下,不同的是,存......
  • 密码管理工具Buttercup
     如果你在寻找一款优先考虑本地使用的密码管理器,那么Buttercup 就是一个针对macOS、Linux和Windows的理想选择。如果你不需要云同步功能,但希望寻找一款与KeePass用户体验不同的密码管理器,那么Buttercup将是一个好的替代品。这是一个带有简洁用户界面的跨平台开源密......
  • MariaDB忘记密码
    如果您忘记了MariaDB的root密码,可以按照以下步骤来重置密码:停止MariaDB服务:sudosystemctlstopmariadb启动MySQL安全模式,跳过权限表,并以root用户登录:sudomysqld_safe--skip-grant-tables&mysql-uroot在MySQL命令行中,用以下命令刷新权限表,并设置新密码:FLUSHPRIVIL......
  • 哪款工程项目管理系统最适合你?一文看懂顶级13款
    国内外主流的13款工程项目管理系统软件:Worktile、中建软件、泛微建筑项目管理软件、LiquidPlanner、Wrike、建文软件、广联达、MicrosoftProject、泛普软件、Procore、Buildertrend、Fieldwire、AutodeskConstructionCloud。在快速变化的工程领域,有效的项目管理是成功的关键......
  • 6.15 工程数学实验一
    实验一:黄金分割法(0.618法)程序设计一、实验目的 通过一维寻优黄金分割法的程序设计,培养学生计算机的应用能力,并为今后无约束优化方法的学习和编程,奠定基础;掌握缩小寻优区间的黄金分割法。 二、实验内容 (1)请用0.618法求解优化问题: 的极小点和极小值(进退法确定初始区间),......
  • 振弦采集仪在隧道工程中的安全监测与控制研究
    振弦采集仪在隧道工程中的安全监测与控制研究隧道工程的安全监测与控制是保障隧道施工和运营安全的重要工作。隧道工程常面临的问题包括地层变形、地下水位变化、地震影响等,这些问题对隧道结构的安全性和使用寿命有着重要影响。因此,隧道工程中的安全监测与控制研究非常重要。 ......
  • 工程数学实验5
    实验五:MATLAB最优化工具箱的使用(1)线性规划应用案例的求解1、基本要求通过一个农业生产计划优化安排的实例求解,培养学生解决实际线性规划问题的初步能力;熟悉线性规划的建模过程;掌握Matlab优化工具箱中线性规划函数的调用。2、主要内容某村计划在100公顷的土地上种植a、b、c三......
  • 工程数学实验四
    上机实验四:共轭梯度法程序设计1、基本要求掌握共轭梯度法的基本思想及其迭代步骤;学会运用MATLAB编程实现常用优化算法;能够正确处理实验数据和分析实验结果及调试程序。2、主要内容(1)求解无约束优化问题:(2)终止准则取;(3)完成FR共轭梯度法的MATLAB编程、调试;(4)选取几个与实验二实验......
  • Java工程师技术提升汇总【1.1】
    4.6.VIM键盘图第5章网络配置和系统管理操作5.1查看网络IP和网关1)查看虚拟网络编辑器2)修改ip地址5.2配置网络ip地址5.2.1ifconfig配置网络接口ifconfig:networkinterfacesconfiguring网络接口配置1)基本语法:ifconfig(功能描述:显示所有网络接口......