Fermat素性检验算法
(作者:Baron_wu 禁止转载)
一、实验目的
这次的实验是使用Fermat素性检验算法(这是一个概率性算法),来判断从文本文件中输入进去的大整数是不是一个素数。在平时我们接触到的C语言结构中,最大的表示数值是unsigned int型数据,其最大可以表示数据,也就是八个字节的大小,即使是这样,对于我们信息安全实验来说,这样的数据类型长度是远远不够的。在实验中,我们需要用到miracl函数库,它定义了两种新的数据类型——表示大整数的big类型和表示有理数的flash(short for floating-slash)类型。通过本次实验,可以让我们熟悉miracl库中的一些基本操作函数,将Fermat素性检验算法在实验中展示出来。
二、方案设计(算法流程图)
三、主要函数的介绍
3.2.1 mirsys()
函数原型: miracl *mirsys(int nd, int nb);
功能说明: 初始化当前程序线程的MIRACL系统,如下所述,必须在尝试使用任何其他MIRACL例程之前调用:
(1)初始化错误跟踪机制。
(2)从nd和nb计算用于每个大/闪存号的计算机字数。
(3)初始化了16个大的工作变量(其中4个为双倍长度)。
(4)某些实例变量被赋予默认初始值。
(5)通过调用irand(0L)启动随机数发生器。
这个函数的返回值是是一个miracl实例指针,通过它可以访问所有实例变量,如果没有足够的内存来创建