论文部分内容阅读
在现代网络应用中,信息安全是一个核心问题。特别是在信息传输和交换、网络远程认证和电子签名等应用方面,对信息的保密性、安全性、完整性和真实性要求极为严格。目前保证这些信息安全特性的主要手段,是利用基于数论理论的公钥加密机制和技术实现。而公钥加密机制算法绝大部分都是基于素数运算实现,如RSA算法,ElGamal算法等。在实际应用,为了保证加密的安全性和可靠性,算法运算都是建立在大素数的基础之上的,比如,RSA算法要求至少100位(10进制数)以上的素数。而随着计算机技术的发展,计算机计算能力越来越强,这些算法就会要求更长位数的素数来保证其加密可靠性。因此,如何快速的寻找到大素数,对加密效率和加密应用至关重要。本文在研究过程中,参考了大量国内外文献,对素数理论和素数计算等方面的研究现状进行了概括。文章主要对大素数的产生和素性判定等方面的内容进行了详细分析研究,重点对概率性测试算法进行了深入分析和对比。在研究已有大素数计算方法的基础上,结合自己研究工作环境,通过对Lehmann与Rabin-Miller实验对比分析,以及基于它们的改进方案实验结果对比分析,选择通过改进Rabin-Miller测试,以软件方式来实现大素数快速产生。算法基于对Rabin-Miller测试改进,利用C语言开发实现。本文用10000进制对大数进行表示,并在此表示基础上实现了大数的加、减、乘及大数快速求模运算。影响大素数的生成效率的主要环节是Rabin-Miller测试过程。算法先利用改进的小素数筛值法对大数进行预测试,以减少大素数生成中运算Rabin-Miller测试的次数,从而提高对合数的排除效率。对Rabin-Miller测试的改进,具体体现在:首先采用模块化的设计方法对其实现难度进行了分解;其次,对测试中证据随机数的产生进行了优化;最后,利用自己设计的试商相减法实现的大数求模运算以及自行改进的加法链生成算法实现了高次剩余运算。算法实验结果显示,改进算法能够有效提高大素数产生效率,分析结果也表明用改进算法产生的素数具有很高的可信度,算法具有较强的实际应用意义。