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

密码工程-大素数

时间:2024-06-06 18:44:39浏览次数:13  
标签:工程 temp state number 密码 素数 gmp mpz

任务详情

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

image

运行

image

验证

image

57896044618658097711785492504343953926634992332820282019728792003956564819968(2^255)
70907801182686810441628914638291098357943705721662653294993757427611873632379(大素数1)
81453251508306472626322650422738268817040832714932998071908453138966836955141(大素数2)
115792089237316195423570985008687907853269984665640564039457584007913129639935(2^256-1)

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

相关文章

  • HC32F4A0PITB创建工程模板
    使用芯片第一步网上搜索如何创建工程模板,如何下载和查看资料!!!本教程使用的开发板是【立创·天空星HC32F4A0PITB开发板】网址:https://lckfb.com/project/detail/lckfb-lspi-skystar-hc32f4a0pitb-lite?param=baseInfo开源原理图和PCB,资料免费!!!!感谢立创开发板团队的开源!!一、......
  • 密码工程-小素数
    任务详情在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,使用git管理过程,至少提交三次参考《密码工程》p107伪代码基于Eratosthenes算法实现intSmallPrimeList(intn,int*plist,int*len),其中plist返回素数列表,len返回列表长度(5’)写出测试代码,至少包括......
  • 密码工程-扩展欧几里得算法
    任务要求在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,要用git记录实现过程,gitcommit不能低于5次严格按照《密码工程》p112伪代码实现ExtendedGCD(inta,intb,int*k,int*u,int*v)算法(10')2.根据ExtendedGCD实现计算有限域模除的函数intModDiv(inta,in......
  • 从提示工程到代理工程:构建高效AI代理的策略框架概述
    自ChatGPT推出以来,仅仅一年多的时间里,公众对于“人工智能”(AI)的认识已经发生了根本性的变化。这种变化部分源于公众意识的提高,更多则是基于这样一个认识:AI驱动的系统不仅可能,而且可能已经具备了与人类相当的能力和表现。ChatGPT不仅是AI能力的一个验证,更是半个多世纪以来AI研究成......
  • mybatis逆向工程generatorConfiguration配置
      <?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEgeneratorConfigurationPUBLIC"-//mybatis.org//DTDMyBatisGeneratorConfiguration1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"&......
  • 【PB案例学习笔记】-03用户名密码校验
    写在前面这是PB案例学习笔记系列文章的第3篇,该系列文章适合具有一定PB基础的读者。通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。文章中设计到的源码,小凡都上传到了gitee代码仓库https://gitee.com/xiezhr/pb-project-example.gi......
  • 文件夹如何加密码全攻略,5个文件夹加密方法新手也能学
    文件夹如何加密码?在这个互联网时代,隐私保护越来越受到大家的重视。我们在日常工作中,有时候会接触一些比较重要的文件,为了不让这些文件信息被泄露,所以我们可以给文件夹设置密码保护。那要怎么给文件夹设置密码呢?今天小编就来给大家分享5个文件夹加密码的方法,希望可以通过这篇文......
  • 前端实现输入内容计算密码强度
    提示:记录工作中遇到的需求及解决办法文章目录前言一、思路二、计算密码强度分数密码强度动画展示效果完善动画效果完整代码前言平时我们在浏览各种网站和APP的时候,都接触过密码这个东西~密码设置的好不好,关乎到你的账号安全性,越复杂的密码越安全,所以密......
  • 【EI会议征稿通知】第四届能源工程与电力系统国际学术会议(EEPS 2024)
    第四届能源工程与电力系统国际学术会议(EEPS2024)20244th InternationalConferenceonEnergyEngineeringandPowerSystems   第四届能源工程与电力系统国际学术会议(EEPS2024),将于2024年8月9-11日在杭州召开,由杭州电子科技大学主办,杭州电子科技大学自动化学院承办......
  • 【预计IEEE出版】第四届电子信息工程与计算机技术国际学术会议(EIECT 2024)
       第四届电子信息工程与计算机技术国际学术会议(EIECT2024)20244thInternationalConferenceonElectronicInformationEngineeringandComputerTechnology2024年11月15-17日|中国深圳#往届均已成功见刊、EI检索;先投稿,先送审,先录用!快至投稿后三天录用!重要......