rsa系统的密钥生成:1。选择两个大素数p和q。计算:n=p*q(p和q是两个互不相同的大素数,p和q必须保密。一般要求p和q是安全素数,n的长度大于512位。这主要是因为rsa算法的安全性依赖于大数的因子分解。欧拉函数(n)=(p-1)(q-1)。三。然后随机选择加密密钥e,并要求e和(p-1)*(q-1)互素数。4最后利用欧几里德算法计算出满足de≡1(modφ(n))的解密密钥d。其中n和d也是互质。数字e和n是公钥,d是私钥。两个素数p和q已经不需要了,应该丢弃,不要让任何人知道。加解密算法:1。当加密信息m(二进制表示)时,首先将m分成等长数据块m1、m2、…、mi、块长度s,其中2^s<=n,s尽可能大。2相应的密文是:ci≡mi^e(modn)(a)3。解密时,计算如下:mi≡ci^d(modn)(b)rsa可用于数字签名,方案使用(a)签名和(b)验证。
rsa方法的工作原理如下:
1)任意选择两个不同的大素数p和q,计算乘积r=p*q;
2)任意选择一个大整数e,e与(p-1)*(q-1)互质,整数e作为加密密钥。
注意:e的选择很容易。例如,所有大于p和q的素数都可用。
3)确定解密密钥d:d*e=1mod(p-1)*(q-1)d可以很容易地从e、p和q计算出来。
4)5)通过c=pemodr(e是幂)将明文p(假设p是小于r的整数)加密到密文c
6)通过p=cdmodr(d是幂)将密文c解密到明文p。然而,仅仅用r和e(而不是p和q)来计算d是不可能的。因此,任何人都可以加密明文,但只有授权用户(谁知道d)可以解密密文。示例:选择p=3,q=5,分别计算d和e?假设明文是一个整数13,请给出密文数。解:如果p=3,q=5,则r=15,(p-1)*(q-1)=8。选择e=11(质数大于p和q),用d*11=1mod8计算d=3。假设明文是一个整数13。则密文c为(e为幂)c=pemodr=1792160394037mod15=7,恢复的明文p为(d为幂)p=cdmodr=343mod15=13