信息安全基础综合实验之Fermat素性检验算法(通过调用miracl大数库来实现)

这篇博客介绍了如何利用Miracl大数库在C语言环境中实现Fermat素性检验算法,包括环境搭建、实验目的、方案设计与实现。实验目的是通过Fermat检验理解大整数操作,并熟悉Miracl库的基本操作。作者强调了Fermat检验的随机性和Carmichael数的存在,同时提供了关键函数如mirsys、bigrand、compare等的介绍和示例代码。
摘要由CSDN通过智能技术生成

    信息安全基础综合实验总共包含有二大块的内容,分为小组作业(小组作业有四项任务,为Fermat素性检验算法、中国剩余定理、密钥分配以及SM3的实现)和个人作业(SM2加密算法的实现),我也会分别通过五篇博客来分别记录。先进行小组作业,等把小组作业的四次做完之后,就可以对Miracl库的使用基本上掌握了。

    俗话说的好,要做实验,肯定要先搭建环境,环境两小时,实验五分钟。而实验所需要的环境就是把miracl库添加进来即可。首先编译miracl包,参加我同学W的这个博客:https://blog.csdn.net/Baron_wu/article/details/83151473,里面讲述了如何生成所需要的miracl.lib,如果搞不定的话,那就来问我索取吧(邮箱联系308904186@qq.com);得到了这个包之后,那环境就算是完成了90%了,下面是在Visual Studio中调用此库即可,过程可以继续参考我这个同学W的另外一篇博客:https://blog.csdn.net/Baron_wu/article/details/83177251。通过这两个步骤后,就可以很开心的去编程吧!顺便感谢一下这个同学W,为什么他的出镜率这么高呢,因为我们两个是一组的,当时为了能够成功地调用Miracl库也是费了一番心思。

    那下面就切入正题,看看如何通过Miracl库来实现Fermat素性检验算法。因为这是第一篇的博客嘛,除了对Fermat素性检验的介绍之外,对于一些Miracl库中的函数也会有一个很简单的介绍。

一、实验目的

  在前面的四次小实验中,对我们的考察难度不是很大,四个小实验对我们提出来的要求是,通过完成验证四个定理的过程,让我们能够相比较才学习信息安全数学基础与现代密码学时,能更加详细的了解关于这四个定理的内容。第一次的实验是使用Fermat素性检验算法(这是一个概率性算法),来判断从文本文件中输入进去的大整数是不是一个素数。在平时我们接触到的C语言结构中,最大的表示数值是unsigned int型数据,其最大可以表示数据2^{64},也就是八个字节的大小,即使是这样,对于我们信息安全实验来说,这样的数据类型长度是远远不够的。在实验中,我们需要用到miracl函数库,它定义了两种新的数据类型——表示大整数的big类型和表示有理数的flash(short for floating-slash)类型。通过本次实验,可以让我们熟悉miracl库中的一些基本操作函数,将Fermat素性检验算法在实验中展示出来。

二、方案设计

2.1 Fermat素性检验

也就是说,要判断一个奇整数是不是素数(如果这个数是偶数那肯定就不是素数了),我们可以通过随机选取同m互为质数的一个整数a(如果m和a不互质的话,那么m也肯定不是素数),判断m和a是否满足费马小定理,如果满足的话,m就会以不低于\frac{1}{2}的概率是一个素数。对于这个定理的证明,我也去网上查找了相关的资料,但是依旧对这个定理的证明不是特别的了解,等到以后能力提升再来读懂此定理的证明,也不在报告里附上此定理的证明了。

   下面是Fermat素性检验算法的步骤,这儿我用一张图来阐明Fermat素性检验算法的原理:

 2.2

  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值