[发明专利]一种基于RSA密码算法的加解密硬件系统及方法有效
申请号: | 201810877374.X | 申请日: | 2018-08-03 |
公开(公告)号: | CN109039640B | 公开(公告)日: | 2021-10-19 |
发明(设计)人: | 陆江城;熊晓明 | 申请(专利权)人: | 广东工业大学 |
主分类号: | H04L9/30 | 分类号: | H04L9/30;H04L9/32 |
代理公司: | 广东广信君达律师事务所 44329 | 代理人: | 杜鹏飞;杨晓松 |
地址: | 510062 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 rsa 密码 算法 解密 硬件 系统 方法 | ||
1.一种基于RSA密码算法的加解密硬件系统,其特征在于,包括RSA主控模块、密钥产生模块、加密控制模块、解密控制模块、模幂运算模块、模乘运算模块和大数乘法器模块,其中:
所述RSA主控模块用于调用所述加密控制模块和解密控制模块;
所述密钥产生模块用于生成加密和解密需要用到的公钥{e,N}和私钥{d,N};
所述加密控制模块用于在接收到RSA主控模块发送的加密命令后,通过调用所述密钥产生模块、模幂运算模块和模乘运算模块,产生公钥{e,N}和私钥{d,N},从而加密生成明文M的密文C;
所述解密控制模块用于在接收到RSA主控模块发送的解密命令后,通过调用所述模幂运算模块、模乘运算模块,使用加密过程的私钥{d,N},解密出密文C的明文M',并验证M'是否等于M;
所述模幂运算模块用于处理在进行加密和解密过程中的模幂运算Memod N;
所述模乘运算模块用于处理在进行加密和解密过程中的模乘运算A×B mod N;
所述大数乘法器模块用于处理在进行模乘过程中的大数乘法运算;
所述加解密硬件系统的加解密方法包括以下步骤:
S1,首先调用密钥产生模块生成公钥{e,N}和私钥{d,N};
S1.1,随机产生两个512位的随机大素数p,q;
S1.2,计算N=p×q、
S1.3,任意选择一个满足要求的整数e,满足并且
S1.4,计算d,其中满足
S1.5,公开所生成的公钥{e,N},并保密所生成的私钥{d,N};
S2,加密时,调用模幂运算模块、模乘运算模块和大数乘法器模块,通过计算C=Memod N求得密文C;
S3,解密时,调用模幂运算模块、模乘运算模块和大数乘法器模块,通过计算M=Cdmod N求得明文M;
其中,所述模幂运算模块使用改进的L-R模幂算法,所述改进的L-R模幂算法具体步骤如下:
(1)预运算:首先将R=22(n+2)mod N的值存放到硬件系统中;然后计算P=Mont(R,M,N),Z=Mont(1,M,N);
(2)对于e>0时,重复执行以下步骤:
a)if(e[0]=1)then Z=Mont(Z,P,N);
else then Z=Z;
b)P=Mont(P,P,N);
c)e=e>>1;
(3)计算Z=Mont(1,Z,N);
(4)返回计算结果Z;
其中,所述模乘运算模块使用改进的Montgomery模乘算法,所述改进的Montgomery模乘算法具体步骤如下:
(1)以2128为基表示Montgomery模乘算法中的(A,B,N),其中幂指数2称为字长,令所以其中n′0满足
(2)初始化,令S=0;预计算n′0的值:通过密钥产生模块得出的模可求出
(3)对于i从0到m-1时,重复执行以下步骤:
a)q=(S+ai×B)(n′0)mod 2128;
b)
(4)重复执行以下步骤两次:
a)if(S[0]==1)then S=S+N;
else then S=S.;
b)S=S>>1;
(5)返回计算结果S。
2.根据权利要求1所述的基于RSA密码算法的加解密硬件系统,其特征在于,所述模幂运算模块使用改进的L-R模幂算法。
3.根据权利要求1所述的基于RSA密码算法的加解密硬件系统,其特征在于,所述模乘运算模块使用改进的Montgomery模乘算法。
4.一种基于RSA密码算法的加解密方法,其特征在于,包括下述步骤:
S1,首先调用密钥产生模块生成公钥{e,N}和私钥{d,N};
S1.1,随机产生两个512位的随机大素数p,q;
S1.2,计算N=p×q、
S1.3,任意选择一个满足要求的整数e,满足并且
S1.4,计算d,其中满足
S1.5,公开所生成的公钥{e,N},并保密所生成的私钥{d,N};
S2,加密时,调用模幂运算模块、模乘运算模块和大数乘法器模块,通过计算C=Memod N求得密文C;
S3,解密时,调用模幂运算模块、模乘运算模块和大数乘法器模块,通过计算M=Cdmod N求得明文M;
其中,所述模幂运算模块使用改进的L-R模幂算法,所述改进的L-R模幂算法具体步骤如下:
(1)预运算:首先将R=22(n+2)mod N的值存放到硬件系统中;然后计算P=Mont(R,M,N),Z=Mont(1,M,N);
(2)对于e>0时,重复执行以下步骤:
a)if(e[0]=1)then Z=Mont(Z,P,N);
else then Z=Z;
b)P=Mont(P,P,N);
c)e=e>>1;
(3)计算Z=Mont(1,Z,N);
(4)返回计算结果Z;
其中,所述模乘运算模块使用改进的Montgomery模乘算法,所述改进的Montgomery模乘算法具体步骤如下:
(1)以2128为基表示Montgomery模乘算法中的(A,B,N),其中幂指数2称为字长,令所以其中n′0满足
(2)初始化,令S=0;预计算n′0的值:通过密钥产生模块得出的模可求出
(3)对于i从0到m-1时,重复执行以下步骤:
a)q=(S+ai×B)(n′0)mod 2128;
b)
(4)重复执行以下步骤两次:
a)if(S[0]==1)then S=S+N;
else then S=S.;
b)S=S>>1;
(5)返回计算结果S。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广东工业大学,未经广东工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810877374.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:基于分层确定性密码学技术的投标方法
- 下一篇:区块链应用系统