[发明专利]一种改进的快速生成大素数的方法在审
申请号: | 201510814575.1 | 申请日: | 2015-11-23 |
公开(公告)号: | CN105515770A | 公开(公告)日: | 2016-04-20 |
发明(设计)人: | 叶宁;梁成良;林巧民;王汝传 | 申请(专利权)人: | 南京邮电大学 |
主分类号: | H04L9/30 | 分类号: | H04L9/30;H04L9/08 |
代理公司: | 南京知识律师事务所 32207 | 代理人: | 汪旭东 |
地址: | 210023 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 改进 快速 生成 素数 方法 | ||
技术领域
本发明涉及一种改进的快速生成大素数的方法,属于信息安全的技术领域。
背景技术
非对称密码体制也称为公钥加密体制,该体制是针对对称密码体制的缺陷而被提出来的。在公钥加密系统中,加密和解密是相对独立的,加密和解密使用的是两把不同的密钥。其中一个密钥是公开的,称之为公开密钥(简称公钥),用于加密;另一个密钥是为用户专用的,因而是保密的,称之为秘密密钥(简称秘钥),用于解密。因此公钥密码体制也称为双钥密码体制,它彻底改变了原来的加密原理,真正使得互不相识的通信双方在一个不安全的信道上进行安全通信最终成为可能。
公钥RSA加密算法是非对称加密体制中的国际标准,它是惟一被广泛接受并实现的通用非对称加密算法。该加密算法的保密原理是基于大整数因子分解的困难性,也就是说在数学中,两个大素数相乘十分容易,但是再对其乘积的结果进行因式分解却非常困难,因此RSA加密算法将这两个大素数的乘积公开,作为算法的加密密钥。RSA算法的核心是大整数的模幂运算。
云存储是未来信息存储的一种理想方式,它提供方便易用的存储空间,但数据安全问题却是云存储普及中的最大障碍,因为在云存储中的数据不可避免会涉及到私人的(如个人邮件、电话等)以及公司机密(如客户列表、商业备忘录等)。因此云存储安全一直是云存储研究的重点。针对云存储中轻量级数据安全的问题,可以采用数据加密算法进行加密然后再存储从而保证数据的机密性。
由于公钥RSA加密算法既可以用于数据加密,又可以用于数字签名中,所以,其有着广泛的应用。但是,随着对于大数分解技术的不断研究,使得人们可以分解的数越来越大,为了提高RSA算法的安全性,其密钥的长度也随之增加。而本发明提供的方法可以快速生成大素数,增加RSA密钥的长度,提高RSA算法的安全性,进而可以保证加密后数据存储在云存储系统中的机密性。
发明内容
本发明目的在于提供一种可以快速生成大素数的方法,该方法解决了增加RSA密钥的长度,以提高RSA加密算法的安全性的问题,保证了存储在云存储系统中的数据安全性和生成大素数的效率以及RSA加解密的效率。
本发明解决其技术问题所采取的技术方案是:一种改进的快速生成大素数的方法,该方法能够快速生成大素数,是基于Miller-Rabin素数检测算法,通过加入预处理过程,并且采用Montgomery模乘算法对原Miller-Rabin算法检测素数进行了优化。Montgomery模乘算法采用的是模加右移的方法,有效地避免了求模运算中比较耗时的除法运算,减少了原算法中模幂运算的次数,从而大大提高了对于素数的检测速度。
方法流程:
步骤1:首先随机生成指定位数的大整数:
步骤1-1:定义一个数组,其中数组中的每一个元素的范围是0~0xFFFFFFFF;
步骤1-2:以时间为随机种子;
步骤1-3:循环随机的产生数组中的每一个元素上的数;
步骤1-4:循环结束后,使最高位的元素与0x80000000进行按位或运算,使得产生的大整数的最高位是1,即保证大数的位数。
步骤2:对产生的随机大整数进行预处理:
步骤2-1:将该大整数与整数1进行按位或运算,保证其是一个奇数;
步骤2-2:判断该奇数能否被整数5整除;
步骤2-3:如果能,则在该奇数的基础上加上预先定义的素数表PrimeTableB[N](如表1所示)中的数,转到步骤2-1;
步骤2-4:如果不能,则转到步骤2-5;
步骤2-5:判断该大整数能否整除预定义素数表PrimeTableA[M](如表1所示)中的素数;
步骤2-6:如果能整除,则说明产生的大整数不是素数,在该大整数数的基础上加上预先定义的素数表PrimeTableB[N]中的数,转到步骤2-1;
步骤2-7:如果该大整数不能整除预定义素数表PrimeTableA[M]中所有的素数,则说明其可能是素数,转到步骤3;
步骤3:对步骤2中经过预处理后的大整数进行5次的Miller-Rabin算法检测;步骤4:如果5次都通过检测,则该大整数就是素数,转到步骤6;
步骤5:如果没有通过检测,则在该大整数数的基础上加上预先定义的素数表PrimeTableB[N]中的数,转到步骤2;
步骤6:保存并输出该大素数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510814575.1/2.html,转载请声明来源钻瓜专利网。