信息安全工程师 · 高频练习

RSA 已知 p、q 和 e,私钥指数 d 怎么求?

中级 单选题 第 950 题 困难 信息安全工程师RSA私钥指数模逆欧拉函数
题目

在一个用于考试演算的小型RSA示例中,取素数p=11、q=17,公钥指数e=7。按φ(n)=(p-1)(q-1)且ed≡1 mod φ(n)计算,私钥指数d为()。

A 17
B 23
C 80
D 160
题目类型:原创高难度练习题 用途:用于帮助理解信息安全工程师相关考点和答案解析,不等同于官方真题。
正确答案
B
答案解析

先算φ(n)=(11-1)×(17-1)=10×16=160。d是e=7模160的乘法逆元,需要满足7d≡1 mod160。因为7×23=161=1+160,所以d=23。

选项分析

A

错误。17是题目给出的素数q,不是7模160的逆元;7×17 mod160=119。

B

正确。7×23=161,对160取模余1。

C

错误。80是φ(n)的一半,且7×80 mod160=80,不满足逆元条件。

D

错误。160是φ(n),不是私钥指数;7×160 mod160=0。

本题为什么容易错

RSA演算题经常把n、φ(n)、e和d四个数混在一起。最稳的方法不是背某组答案,而是每一步写清角色,并在最后用ed mod φ(n)=1回代。

先看结论

简短答案

RSA 已知 p、q 和 e,私钥指数 d 怎么求,正确答案是 B(23)。先算φ(n)=(11-1)×(17-1)=10×16=160。d是e=7模160的乘法逆元,需要满足7d≡1 mod160。因为7×23=161=1+160,所以d=23。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
17 本题干扰项 错误。17是题目给出的素数q,不是7模160的逆元;7×17 mod160=119。 看到该词不要急着选,先判断是否真正解决题干问题
23 本题正确答案 正确。7×23=161,对160取模余1。 看到题干核心场景时优先联想到它
80 本题干扰项 错误。80是φ(n)的一半,且7×80 mod160=80,不满足逆元条件。 看到该词不要急着选,先判断是否真正解决题干问题
160 本题干扰项 错误。160是φ(n),不是私钥指数;7×160 mod160=0。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 17:错误。17是题目给出的素数q,不是7模160的逆元;7×17 mod160=119。
  • 80:错误。80是φ(n)的一半,且7×80 mod160=80,不满足逆元条件。
  • 160:错误。160是φ(n),不是私钥指数;7×160 mod160=0。
复习

知识点详解

RSA密钥生成先选择两个大素数p、q并计算n=pq。经典教材演算常使用φ(n)=(p-1)(q-1),选择与φ(n)互素的公钥指数e,再求乘法逆元d,使ed≡1 modφ(n)。公钥包含n和e,私钥核心参数包含d及相关素数信息。小素数只能用于课堂计算,不能用于实际安全系统;真实工程还要使用标准填充方案、可靠随机数和经过审计的密码实现。

备考速记

d不是除出来的,是让e乘d除以φ后余1的那个模逆。

RSA 在欧拉函数场景中的作用

RSA在本题中的核心价值,是解决“在一个用于考试演算的小型RSA示例中,取素数p=11、q=17,公钥指数e=7。按φ(n)=(p-1)(q-1)且ed≡1 mod φ(n)计算,私钥指数d为()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 给p、q、e,计算n、φ(n)和d。
  • 判断某个e是否与φ(n)互素、是否能生成私钥。
  • 区分RSA加密、签名和密钥生成中公私钥的使用方向。
RSA 在信息安全工程师软考中的考法

软考选择题通常不会只考概念定义,还会把RSA放到欧拉函数场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

这题不用尝试做大数幂。先得到φ=160,然后找一个数让7乘它比160的整数倍多1。160除以7余6,再往上看161恰好是7×23,所以d=23。回代7×23 mod160=1,答案就锁定了。

考点定位

RSA参数题的顺序是n=pq、φ(n)=(p-1)(q-1)、检查gcd(e,φ)=1,再求e关于φ的模逆d。d不是φ除以e的普通商。

易错提醒

  • 把φ(n)误写成pq,或者写成(p-1)+(q-1)。
  • 没有检查e与φ(n)互素;若不互素,乘法逆元不存在。
  • 把模逆当成普通倒数或普通除法,写出小数。

备考提示

  • 小数值题可直接试倍数,大数值题使用扩展欧几里得算法求模逆。
  • 考试演算使用很小的素数只是为了手算,真实RSA必须使用足够长的密钥和成熟密码库。

你可能还想了解

  • RSA为什么要求e和φ(n)互素?
  • 怎样用扩展欧几里得算法求d?
  • n和φ(n)有什么区别?
  • 小素数RSA为什么不能用于真实系统?

本文小结

p=11、q=17时φ(n)=160。因为7×23=161,对160取模余1,所以e=7对应的私钥指数d为23。