今天分享一个软考中经常出现的关于RSA私钥计算的题目。我们试着理解背后的算法逻辑,然后再看看如何解题。
设在RSA的公钥密码体制中,公钥为(e, n)= (13, 35), 则私钥d= ()。
A. 17
B. 15
C. 13
D. 11
RSA 算法
Rivest Shamir Adleman(RSA)加密算法是一种非对称加密算法,广泛应用于许多产品和服务中。非对称加密使用一对密钥(私钥和公钥),公钥是任何人都可以访问的,而私钥是密钥创建者才知道的秘密。可以使用私钥或公钥进行数据加密,然后用另一个密钥进行数据解密。
比如用户A生成一对密钥并将公钥公开。当用户B需要向用户A发送机密信息的时候,用户B使用A的公钥对机密信息进行加密再发送给A,用户A使用自己的私钥对加密信息进行解密。另一方面,用户A可以使用自己的私钥对机密信息进行签名然后发给用户B,用户B再使用A的公钥来验证签名。
算法描述
公钥
任意选取两个不同的大素数p和q,计算乘积 n = p*q;
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因素的自然数。
任意选取一个大整数e,满足gcd (e, (p-1) (q-1)) = 1;
** **gcd:最大公约数, e的选取比较容易,比如所有大于p和q的素数都可用
- 公钥为(e, n)
私钥
- 使用公式 {d*e} mod {(p-1) (q-1)} = 1 来计算;
mod,是一个数学运算符号。指取模运算符,算法和取余运算(REM)相似例如a mod b=c,表明a除以b余数为c
- 密钥为(d, n)
解题思路
已知 公钥为(e, n)= (13, 35),即e = 13,n = 35;
n = p*q,得到p=5, q=7 (或者 p=7, q = 5);
计算得出 (p-1) (q-1) = 24;
将以上参数代入公式 {de} mod {(p-1) (q-1)} = 1,即 {d13} mod 24 = 1
分别计算4个选项,看看哪一个满足条件
{17*13} mod 24 = 5
{15*13} mod 24 = 3
{13*13} mod 24 = 1
{11*13} mod 24 = 23
所以第三个答案满足条件,即d = 13,所以答案选C
版权归原作者 匡河捞小鱼 所有, 如有侵权,请联系我们删除。