[发明专利]一种RSA解密的方法及装置有效
申请号: | 201410350403.9 | 申请日: | 2014-07-22 |
公开(公告)号: | CN104104504B | 公开(公告)日: | 2017-05-10 |
发明(设计)人: | 周兴建;王俊 | 申请(专利权)人: | 大唐微电子技术有限公司 |
主分类号: | H04L9/28 | 分类号: | H04L9/28 |
代理公司: | 北京安信方达知识产权代理有限公司11262 | 代理人: | 李红爽,栗若木 |
地址: | 100094*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 rsa 解密 方法 装置 | ||
技术领域
本发明涉及通信领域,特别是涉及一种RSA解密的方法及装置。
背景技术
RSA即RSA算法。RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
RSA的算法涉及三个参数,N、e、d。
其中,N是两个大质数p、q的积,N的二进制表示所占用的位数,就是所谓的密钥长度。密钥长度为32的倍数,现在常用的是1024、1480、2048等,一般要求N的最高bit为1,此时习惯称相应的RSA为1024位的RSA、1480位的RSA、2048位的RSA等。
e和d是一对相关的值,e可以任意取,但要求e与(p-1)*(q-1)互质;再选择d,要求(e*d)mod((p-1)*(q-1))=1。
(N,e),(N,d)就是密钥对。其中(N,e)为公钥,(N,d)为私钥。e的取值一般不超4个字节,经常用的为3(即0x00000003),17(即0x00000011),257(即0x00000101),65537(即0x00010001)。
RSA加解密的算法完全相同,设m为明文,c为密文,则:m=cdmodN;c=memodN(公钥加密体制中,一般用公钥加密,私钥解密)。
e和d可以互换使用,即:
c=mdmodN;m=cemod N。
蒙哥马利(Montgomery)定理:N和R都是整数,满足gcd(N,R)=1,即N、R的最大公约数为1,N、R互质。令N'=-N-1modR,T是满足0≤T<NR的正整数,若U=TN'modR,则(T+UN)/R是整数,且(T+UN)/R≡TR-1(modN)。
根据蒙哥马利定理,b=232,如果所有整数都表示成b进制,并且R=bn,则满足gcd(N,R)=1。若T=A*B,那么TR-1(modN)就可以根据定理计算(T+UN)/R,而公式中的除以R,可以直接利用移位运算即可,对R取模可以直接取低位,避免了除法运算,提高了速度。通常即上述的模乘为蒙哥马利模乘,符号为MM(A,B,N)=A*B*R-1modN。根据定理0≤(T+UN)/R<2R。
RSA算法就是计算mdmodN,其步骤一般为:
步骤101、计算Montgomery常数平方C=R2modN,其中R=2k,k=(log2N)+1,即k是模数N的位数,一般为32的倍数。
步骤102、调用Montgomery模乘算子,将乘数从普通域转换到Montgomery域,即m1=MM(m,C,N)=(m*R)modN,
步骤103、通过Montgomery模乘算子计算MM(m1,m1,N)=(m2*R)modN,连续调用Montgomery模乘算子可得到中间结果t=(md*R)modN。
步骤104、取常数1,调用Montgomery模乘算子S=MM(t,1,N)=mdmodN,若S≥N,S=S-N,返回S。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大唐微电子技术有限公司,未经大唐微电子技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410350403.9/2.html,转载请声明来源钻瓜专利网。