L04 – Plain RSA, Factoring, and Commitment Schemes

Discrete Mathematics2026年3月13日发布 芮和
17.7K 1160
10,409字
44–66 分钟

Summary of Lecture 3

L03 – Division of residue classes, Euler’s phi function, Euler’s theorem, Fermat’s little theorem, and RSA

The setn={[a]nn:gcd(a,n)=1}\mathbb{Z}_n^* = \{[a]_n \in \mathbb{Z}_n \colon \gcd(a, n) = 1\}

  • Euler’s Phi Function:ϕ(n)=|n|\phi(n) = |\mathbb{Z}_n^*|
  • n=p1e1prerϕ(n)=n(1p11)(1pr1)n = p_1^{e_1} \cdots p_r^{e_r} \Rightarrow \phi(n) = n(1 – p_1^{-1}) \cdots (1 – p_r^{-1})

Euler’s theorem Let n1n \ge 1 and αn\alpha \in \mathbb{Z}_n^*. Then αϕ(n)=1\alpha^{\phi(n)} = 1.

  • Fermat’s Little Theorem: If pp is a prime, then αp=α,αp\alpha^p = \alpha, \forall \alpha \in \mathbb{Z}_p.

RSA:Π=(𝐆𝐞𝐧,𝐄𝐧𝐜,𝐃𝐞𝐜)+,={m:0m<N,gcd(m,N)=1}\Pi = (\mathbf{Gen, Enc, Dec}) + \mathcal{M}, \,\mathcal{M} = \{m \colon 0 \le m < N, \gcd(m, N) = 1\}

  • (pk,sk)𝐆𝐞𝐧(1n)(pk, sk) \leftarrow \mathbf{Gen}(1^n)
    • N=pq;ϕ(N)=(p1)(q1)N = pq; \phi(N) = (p – 1)(q – 1)
    • 0e,d<ϕ(N),de1(modϕ(N))0 \le e, d < \phi(N), de \equiv 1 \pmod{\phi(N)}
    • pk=(N,e),sk=(N,d)pk = (N, e), sk = (N, d)
  • c𝐄𝐧𝐜(pk,m):c \leftarrow \mathbf{Enc}(pk, m):
    • c=memodNc = m^e \bmod N
  • m𝐃𝐞𝐜(sk,c):m \leftarrow \mathbf{Dec}(sk, c):
    • m=cdmodNm = c^d \bmod N

Example

EXAMPLE: this is a toy example; all numbers are very small

  • (pk,sk)𝐆𝐞𝐧(1n)(pk, sk) \leftarrow \mathbf{Gen}(1^n)
    • p=7,q=13p = 7, q = 13
    • N=91,ϕ(N)=72N = 91, \phi(N) = 72
    • e=5e=5
    • d=29d=29
    • pk=(91,5);sk=(91,29)pk = (91, 5);\,sk = (91, 29)
  • c𝐄𝐧𝐜(pk,m):m=2c \leftarrow \mathbf{Enc}(pk, m):\,m = 2
    • c=(25mod91)=32c = \left(2^5 \bmod{91}\right) = 32
  • m𝐃𝐞𝐜(sk,c):c=32m \leftarrow \mathbf{Dec}(sk, c):\,c = 32
    • m=(3229mod91)=2m = \left(32^{29} \bmod 91\right) = 2
  • 3229=(25)29=214532^{29} = \left(2^5\right)^{29} = 2^{145}
  • 2145?(mod91)2^{145} \equiv ? \pmod{91}
  • [2145]91=[?]91\left[2^{145}\right]_{91} = [?]_{91}
  • ([2]91)145=[?]91\left([2]_{91}\right)^{145} = [?]_{91}
  • [2]9191[2]_{91} \in \mathbb{Z}_{91}^*
  • ([2]91)ϕ(91)=[1]91\left([2]_{91}\right)^{\phi(91)} = [1]_{91}
  • ([2]91)145=([2]91)72([2]91)72[2]91\left([2]_{91}\right)^{145} = \left([2]_{91}\right)^{72}\left([2]_{91}\right)^{72}[2]_{91}
    • =[1]91[1]91[2]91= [1]_{91}[1]_{91}[2]_{91}
      =[2]91= [2]_{91}

RSA Security

Security: Without sksk, it’s difficult to learn mm from pk,cpk,c

  • At least, it should be difficult to learn dd from pkpk

Plain RSA and Integer Factoring (given NN, find p,qp,q):

  • “Factoring is easy”\implies“Plain RSA is not secure”
    • N(p,q)ϕ(N)dN \to (p, q) \to \phi(N) \to d: computable with EEA
  • “Plain RSA is secure”\implies“Factoring is hard”
  • “Factoring is hard” \nRightarrow “Plain RSA is secure” //not proved
  • It is likely that “Factoring is hard”\implies“Plain RSA is secure”
    • The best known method of computing dd is via factoring NN

How Large is the NN in practice?

  • |N|=2048\left|N\right|=2048 is recommended from present to 2030
  • |N|=3072\left|N\right|=3072 is recommended after 2030

Example

EXAMPLE: A sample execution of the RSA public-key encryption.

  • p=p=179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624225795083
  • q=q=179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624227077847
  • N=N=32317006071311007300714876688669951960444102669715484032130345427524655138867890893197201411522913463688717960921898019494119559150490921095088152386448283120630877367300996091750197750389652106796057638384067568276792218642619756161838094338476170470581645852036305042887575891541065808607552399123931212190742861198666048560131098081430518774846347259215332611759149330725252437276424147817808729273755165527379964561074264587032664709511346018327798373715290148129504141795132314929388992688247440232727539575514688633282447719228530664706520939357878528540284184156513405575872085703420500969966917951381310826301
  • ϕ(N)=\phi(N)=32317006071311007300714876688669951960444102669715484032130345427524655138867890893197201411522913463688717960921898019494119559150490921095088152386448283120630877367300996091750197750389652106796057638384067568276792218642619756161838094338476170470581645852036305042887575891541065808607552399123931212190383322571693585378585237043272713828122751863426871297212289168409787085665422221552391774628940093485139736801331477871715085171882512773342103512436341899373968354945401344376784553485755251993821373671344677095606146354543604901758694718276224054213583162787340809095977593826461068360296205292132857953372
  • e=e=15
  • d=d=4308934142841467640095316891822660261392547022628731204284046057003287351849052119092960188203055128491829061456253069265882607886732122812678420318193104416084116982306799478900026366718620280906141018451209009103572295819015967488245079245130156062744219446938174005718343452205475441147673653216524161625384443009559144717144698272436361843749700248456916172961638555787971611422056296206985569950525345798018631573510863716228678022917668369778947134991512253249862447326053512583571273798100700265842849822845956946080819513939147320234492629103496540561811088371645441212797012510194809114706160705617714393783
  • m=m=10604921754758721445761654694144853008952777608280437615045472365621528740679915569270051503191522500036448557172487959011926112038398359402756573149541644330968641767630622070720630061130259783825355948223371330949158036812742187057045604934546811790948975878200144189048344249873200320299277234465689039409989622319232683984241843711183212001991457793528752812978134072787404790207031482099444968252108690296363773578594703102617386738297675080295774091447240197521221546035459030086538114428516078644733180655540109133778241607260273655335661777894173665137928787960365220712025120785257907244561721692764755210375
  • c=c=10526389958138962919595594093411158893099743508465902347128478139908774614311778097354795345791726768384252751637693995592403757856185437083738829836072472243389583367910268799453378039419721345566549516730187308436864460088396611726670050723242080139176080334720294195304048915003805656341816548307249886049027910488249318660062714335703057576576016988513484148308512574950252535463185824865665499749033598201370342142901944632549253564037639312442875039735826909329356840665993783695101447610485922726915969967968584661240430425982194189504400469889762574275824269475495394920107921066723277769226199475558068627049

Commitment Scheme (for SI120)

DEFINITION: A non-interactive commitment scheme(𝐆𝐞𝐧,𝐂𝐨𝐦,𝐕𝐞𝐫)(\mathbf{Gen},\mathbf{Com},\mathbf{Ver}) consists of three algorithms as follows

  • params𝐆𝐞𝐧(1n)\mathrm{params}\leftarrow\mathbf{Gen}\left(1^n\right): Takes a security parameter nn as input, outputs the public parameters params\mathrm{params} of the system;
  • (α,β)𝐂𝐨𝐦(params,m)(\alpha,\beta)\leftarrow\mathbf{Com}(\mathrm{params},m): Takes a message mm as input, outputs a commitment α\alpha and an opening value β\beta;
  • {0,1}𝐕𝐞𝐫(α,m,β)\{0,1\}\leftarrow\mathbf{Ver}(\alpha, m, \beta): Takes the commitment α\alpha, the message mm, and an opening value β\beta as input, and outputs 1 (accept) or 0 (reject).

and satisfies the following properties:

  • hiding: the commitment α\alpha reveals nothing about mm.
  • binding: it is hard for the committer to output a commitment α\alpha and later output two pairs (m,β)(m,\beta) and (m,β)\left(m’,\beta’\right) such that 𝐕𝐞𝐫(α,m,β)=𝐕𝐞𝐫(α,m,β)=1\mathbf{Ver}(\alpha,m,\beta)=\mathbf{Ver}\left(\alpha,m’,\beta’\right)=1 but mmm \neq m’.

CONSTRUCTION: a commitment scheme based on RSA encryption

  • params𝐆𝐞𝐧(1n)\mathrm{params}\leftarrow\mathbf{Gen}\left(1^n\right): Do nothing; the params\mathrm{params} is empty.
  • (α,β)𝐂𝐨𝐦(params,m)(\alpha,\beta)\leftarrow\mathbf{Com}(\mathrm{params},m):
    • Choose p,q,N,e,dp,q,N,e,d as per RSA.𝐆𝐞𝐧(1n)\mathrm{RSA}.\mathbf{Gen}\left(1^n\right);
    • Compute c=RSA.𝐄𝐧𝐜(pk,m)c=\mathrm{RSA}.\mathbf{Enc}\left(pk,m\right);
    • Output α=(pk,c)=((N,e),c)\alpha=(pk,c)=\left((N,e),c\right) and β=(p,q,d)\beta=(p,q,d)
  • {0,1}𝐕𝐞𝐫(α,m,β)\{0,1\}\leftarrow\mathbf{Ver}(\alpha, m, \beta): Outputs 1 iff the following equalities are all true:
    • N=pqN=pq;
    • ed1(mod(p1)(q1))ed\equiv 1\pmod{(p-1)(q-1)};
    • RSA.𝐃𝐞𝐜(sk,c)=m\mathrm{RSA}.\mathbf{Dec}\left(sk,c\right)=m

Security Analysis:

  • hiding: Given α=(pk,c)\alpha = (pk, c), it is hard to learn mm//this is ensured by RSA’s security
  • binding: (m,β)=(m,(p,q,d)),(m,β)=(m,(p,q,d))(m,\beta)=\left(m,(p,q,d)\right),\,\left(m’,\beta’\right)=\left(m’,\left(p’,q’,d’\right)\right). Is it possible that 𝐕𝐞𝐫(α,m,β)=𝐕𝐞𝐫(α,m,β)=1\mathbf{Ver}(\alpha,m,\beta)=\mathbf{Ver}\left(\alpha,m’,\beta’\right)=1 but mmm \neq m’?
    • 𝐕𝐞𝐫(α,m,β)=1:N=pq,ed1(mod(p1)(q1)),m=cdmodN\mathbf{Ver}(\alpha,m,\beta)=1:\,N = pq,\,ed \equiv 1 \pmod{(p-1)(q-1)},\, m = c^{d} \bmod{N}
    • 𝐕𝐞𝐫(α,m,β)=1:N=pq,ed1(mod(p1)(q1)),m=cdmodN\mathbf{Ver}\left(\alpha,m’,\beta’\right)=1:\,N = p’q’,\,ed’ \equiv 1 \pmod{\left(p’-1\right)\left(q’-1\right)}, m’ = c^{d’} \bmod{N}
    • The above equalities imply that m=mm = m’

RSA Implementation

CONSTRUCTION: Π=(𝐆𝐞𝐧,𝐄𝐧𝐜,𝐃𝐞𝐜)+\Pi = \left(\mathbf{Gen}, \mathbf{Enc}, \mathbf{Dec}\right) + \mathcal{M}, the message space is ={m:0m<N,gcd(m,N)=1}\mathcal{M} = \left\{m :\, 0 \leq m < N,\,\gcd(m, N) = 1\right\}

  • (pk,sk)𝐆𝐞𝐧(1n)(pk, sk) \leftarrow \mathbf{Gen}\left(1^n\right)
    • choose two nn-bit primes pqp \neq q
    • N=pq;ϕ(N)=(p1)(q1)N = pq;\,\phi(N) = (p-1)(q-1)
    • choose e,de, d s.t. 0e,d<ϕ(N)0 \leq e, d < \phi(N),
      • gcd(e,ϕ(N))=1\gcd\left(e, \phi(N)\right) = 1
      • d=e1modϕ(N)d = e^{-1} \bmod \phi(N)
    • output pk=(N,e),sk=(N,d)pk = (N, e),\,sk = (N, d)
  • c𝐄𝐧𝐜(pk,m)c \leftarrow \mathbf{Enc}(pk, m):
    • output c=memodNc = m^e \bmod N
      • 0c<N0 \leq c < N
  • m𝐃𝐞𝐜(sk,c)m \leftarrow \mathbf{Dec}(sk, c):
    • output m=cdmodNm = c^d \bmod N
      • 0m<N0 \leq m < N

Questions

  • Choose p,qp, q efficiently?
    • Prime Number Generation
  • Compute dd efficiently?
    • Extended Euclidean Algorithm
  • Compute cc/mm efficiently?
    • Square-and-Multiply

1977, Rivest, Shamir and Adleman: A method for obtaining digital signatures and public-key cryptosystems. MIT/LCS/TM-82. (Turing Award 2002)


Addition

Binary Representation of an integer aa: a 0-1 sequence / binary string (ak1a1a0)2\left(a_{k-1}\dots a_1a_0\right)_2 such that

  • a=(ak1a1a0)2a=ak12k1++a121+a020a = \left(a_{k-1} \dots a_1 a_0\right)_2 \iff a = a_{k-1} \cdot 2^{k-1} + \dots + a_1 \cdot 2^1 + a_0 \cdot 2^0

Bit Length of Integer aa: (a)={log2(|a|)+1a01a=0\ell(a) = \begin{cases} \left\lfloor \log_2\left(\left|a\right|\right) \right\rfloor + 1 & a \neq 0 \\ 1 & a = 0 \end{cases}

Algorithm for Addition:

  • Input:a=(ak1a1a0)2,b=(bk1b1b0)2a = (a_{k-1} \dots a_1 a_0)_2 ,\, b = (b_{k-1} \dots b_1 b_0)_2
  • Output:c=a+b=(ckck1c1c0)2c = a + b = (c_k c_{k-1} \dots c_1 c_0)_2
    • carry0carry \leftarrow 0
    • for i0i \leftarrow 0 to k1k-1 do
      • tai+bi+carryt \leftarrow a_i + b_i + carry
      • set cic_i and carrycarry such that t=2carry+cit = 2 \cdot carry + c_i
    • ckcarryc_k \leftarrow carry
  • Complexity:O(k)O(k) bit operations

Big O notation: O(g(n))={f(n):c,n0>0 such that 0f(n)cg(n) for all nn0}O\left(g(n)\right)=\left\{f(n):\,\exists c,n_0>0\text{ such that }0\leq f(n)\leq c\cdot g(n)\text{ for all }n\geq n_0\right\}

© 版权声明

相关文章

116 条评论

  • 龙魂侠
    龙魂侠 游客

    commitment scheme的params为空是不是意味着不用额外参数?

    中国北京
    回复
  • 企鹅步
    企鹅步 游客

    模运算那里确实跳得快,得自己推一遍才明白

    美国
    回复
  • 哈哈镜
    哈哈镜 读者

    e=5在实际中肯定不会用吧,太小了容易被攻击

    中国云南
    回复
  • 夜之秘使
    夜之秘使 读者

    之前做密码学作业差点被RSA搞疯,生成素数太折磨了

    中国陕西
    回复
  • 社恐小鱼
    社恐小鱼 游客

    绑定性质那边多看两遍就懂了,画个图更好理解

    中国山东
    回复
  • 乌龟先生
    乌龟先生 游客

    平方乘算法是不是就是不断平方然后相乘?

    中国广东
    回复
    • 小兔子兔兔
      小兔子兔兔 游客

      平方乘不就是把指数拆成二进制,边平方边乘?比如2^13=2^8*2^4*2^1这样?

      日本@ 乌龟先生
      回复
  • 辣椒小炒肉
    辣椒小炒肉 游客

    这些大数例子,除了让人晕还有啥用?

    中国北京
    回复
    • 熵减漩涡
      熵减漩涡 游客

      大数例子确实看着头疼,但理解原理挺重要的

      中国上海@ 辣椒小炒肉
      回复
  • 霸气狮王
    霸气狮王 游客

    感觉数论基础差的话,看这个确实费劲。

    日本
    回复
  • 哪吒闹海
    哪吒闹海 读者

    模运算那里跳得有点快,一下子没跟上。

    韩国
    回复
  • Misty Mountain
    Misty Mountain 游客

    这文章是不是缺了点实际应用的例子?

    美国
    回复
  • 孤星剑客
    孤星剑客 游客

    3072位的N,现在的电脑算起来也费劲吧?

    中国辽宁
    回复
    • 墨玉刀客
      墨玉刀客 游客

      3072位现在普通服务器能跑,就是慢点

      中国陕西@ 孤星剑客
      回复
  • 古树茶魂
    古树茶魂 游客

    e=5也太小了吧,实际用不怕被攻击吗?

    中国广西
    回复
  • 血色回廊
    血色回廊 游客

    绑定性质那部分确实绕,感觉需要画个流程图才清楚。

    中国湖北
    回复
  • 太空焊接工
    太空焊接工 读者

    之前搞过RSA实验,光生成大素数就卡半天。

    中国重庆
    回复
  • 霜烬随行
    霜烬随行 游客

    那个平方乘算法具体咋操作啊?没太明白。

    中国天津
    回复
    • 赛博刺客
      赛博刺客 游客

      其实就是把指数二进制拆位,遇1就乘当前结果,代码网上一搜就有

      泰国@ 霜烬随行
      回复
    • 人群滤镜
      人群滤镜 读者

      平方乘就是先平方再选择乘,具体步骤网上有视频讲解

      蒙古@ 霜烬随行
      回复
    • 安静的烟火
      安静的烟火 读者

      平方乘就是把指数转二进制,边平方边乘,比如算a^13就按1101来

      中国青海@ 霜烬随行
      回复
  • 星辰之痕
    星辰之痕 游客

    这些数学符号看得我头疼,根本读不下去。

    中国上海
    回复
  • 青柠往事
    青柠往事 游客

    那个commitment scheme的验证过程,params为空是啥意思?

    中国湖南
    回复
    • 竹林听雨
      竹林听雨 游客

      params为空就是不用传额外参数,直接用RSA那套就行

      中国河南@ 青柠往事
      回复
  • Broken Sword
    Broken Sword 游客

    感觉数论不行看这个确实费劲,得先补补模运算

    越南
    回复
    • 赤焰将
      赤焰将 游客

      模运算那块跳得我脑壳疼,得翻书补欧拉定理才行

      中国广东@ Broken Sword
      回复
  • 吃货联盟
    吃货联盟 读者

    这大数例子是直接复制粘贴的吧,谁看得完啊😂

    中国江苏
    回复
  • 开朗外向
    开朗外向 游客

    e=5这种小公钥指数是不是有已知攻击来着?

    印度尼西亚
    回复
  • Autumn Breeze
    Autumn Breeze 游客

    3072位密钥,普通电脑跑一次加密要多久?

    菲律宾
    回复
    • 符文编织者
      符文编织者 游客

      3072位密钥现在跑起来应该还行吧,再过几年就难说了

      菲律宾@ Autumn Breeze
      回复
    • 九尾灵狐
      九尾灵狐 游客

      普通电脑跑3072位加密?我笔记本风扇先炸了

      中国@ Autumn Breeze
      回复
    • 和弦漂流
      和弦漂流 读者

      普通电脑跑3072位加密也就几毫秒吧,别被数字吓到

      中国福建@ Autumn Breeze
      回复
  • 幽灵眼
    幽灵眼 游客

    绑定性质那个证明看晕了,有没有更直白的解释?

    尼泊尔
    回复
  • 镜中水月
    镜中水月 游客

    感觉数论基础不行看这个好吃力

    中国四川
    回复
  • 花花兔
    花花兔 游客

    这些大数看着像天书,完全看不懂

    澳大利亚
    回复
    • 威猛虎爷
      威猛虎爷 游客

      这大数堆得跟乱码似的,眼睛都花了

      中国四川@ 花花兔
      回复
  • 呦呦鹤
    呦呦鹤 读者

    模运算那里跳得太快了,怎么就从2^145变成2了

    中国北京
    回复
  • 安静的火焰
    安静的火焰 读者

    e=5在实际中肯定不会用,太小容易被攻击

    中国湖北
    回复
  • 向日葵小屋
    向日葵小屋 游客

    RSA直接加密确实有问题,实际都用OAEP吧

    中国福建
    回复
    • 刺猬球球
      刺猬球球 读者

      OAEP是必须的,不然确定性加密直接完蛋

      中国广东@ 向日葵小屋
      回复
  • 天体观测
    天体观测 读者

    commitment那个绑定性质有点绕,需要多看几遍

    中国浙江
    回复
  • 暮云收
    暮云收 游客

    3072位的N看着就头大,这得算到啥时候

    中国浙江
    回复
  • 听风竹
    听风竹 读者

    手算2^145 mod 91?我直接放弃hhh

    中国上海
    回复
    • NFT收藏家
      NFT收藏家 游客

      手算那个例子其实可以试试,数字小反而好理解

      中国湖北@ 听风竹
      回复
  • 毛球狍子
    毛球狍子 游客

    ϕ(N)算出来就能解密,那保护p,q真关键

    中国
    回复
    • 烟雨拂弦
      烟雨拂弦 游客

      p和q要是泄露了,整个RSA就白搭,太致命了

      中国浙江@ 毛球狍子
      回复
  • 网络舵手
    网络舵手 游客

    感觉plain RSA直接加密不太安全吧

    中国广东
    回复
  • PixieDust
    PixieDust 游客

    平方乘算法讲得太简略了,具体咋实现的?

    中国广西
    回复
    • 青梦无垠
      青梦无垠 游客

      平方乘不就是反复平方和乘法么,具体实现要看模数大小

      日本@ PixieDust
      回复
  • 天行智能
    天行智能 读者

    那个commitment scheme是不是依赖RSA安全性啊?

    韩国
    回复
    • Celestial Crane
      Celestial Crane 游客

      这例子p=7 q=13也太小了,用来理解倒是挺直观

      中国河南@ 天行智能
      回复
    • 银甲将军
      银甲将军 游客

      平方乘算法能展开讲讲吗?光看名字不懂啊

      中国江苏@ 天行智能
      回复
  • 社交迷宫
    社交迷宫 游客

    e=5也太随意了吧,实际会这么选吗?

    中国新疆
    回复
  • White Fox
    White Fox 游客

    这例子数字小得我都想手算了😂

    中国辽宁
    回复
  • 铜锁锈
    铜锁锈 游客

    之前搞过RSA实验,光生成大素数就卡半天

    中国浙江
    回复
    • 梦中的你
      梦中的你 游客

      大素数生成确实折腾,我当时跑了一晚上才出来一个

      中国广东@ 铜锁锈
      回复
  • 星驰科技
    星驰科技 游客

    大数分解真就这么难?3072位看着就头大

    中国安徽
    回复
  • 噼啪噼
    噼啪噼 读者

    模运算那块例子举得挺清楚。

    中国山东
    回复
    • 墨染衣
      墨染衣 读者

      例子确实通俗易懂。

      中国湖南@ 噼啪噼
      回复
  • 奶泡柯基
    奶泡柯基 读者

    RSA的例子看着像天书。

    中国北京
    回复
  • 代码矿工
    代码矿工 读者

    绑定性和隐藏性这俩概念还挺绕的。

    泰国
    回复
    • 傻冒
      傻冒 读者

      我也经常搞混这两个概念。

      中国江苏@ 代码矿工
      回复
  • 光速逃离
    光速逃离 读者

    平方乘算法那块挺实用。

    韩国
    回复
    • 宇宙魔方
      宇宙魔方 读者

      确实实用,经常用到

      中国陕西@ 光速逃离
      回复
  • 夜魇之瞳
    夜魇之瞳 读者

    承诺方案那段没太看明白,能再展开讲讲吗?

    印度
    回复
  • 凌霄
    凌霄 读者

    RSA的安全性主要靠大数分解难吗?

    波兰
    回复
    • 夜风吟游
      夜风吟游 读者

      我也一直有这个疑问

      韩国@ 凌霄
      回复
  • 夏夜微风
    夏夜微风 读者

    例子里的p和q选得也太小了,7和13真的能安全吗?

    中国广东
    回复
    • 奶球儿
      奶球儿 读者

      我也觉得,例子就是演示用的

      美国@ 夏夜微风
      回复
  • 噬魂之刃
    噬魂之刃 读者

    大N2048位,现在够用吗?

    中国广东
    回复
  • 噬魂魔
    噬魂魔 读者

    绑定性和隐藏性讲得蛮清楚。

    韩国
    回复
  • 混沌降临
    混沌降临 游客

    这篇的符号太多,直接看成天书

    中国重庆
    回复
  • 月光秘法师
    月光秘法师 读者

    例子里的N也太大了,看着都晕

    中国江苏
    回复
    • 凛音晴美
      凛音晴美 读者

      同感,数字太大看着累

      中国福建@ 月光秘法师
      回复
    • 小灰狼
      小灰狼 游客

      之前密码学课大作业就是实现RSA,调那个扩展欧几里得调了一晚上

      中国香港@ 月光秘法师
      回复
    • 农夫田七
      农夫田七 读者

      手算2^145 mod 91?我直接放弃,这谁顶得住啊

      中国北京@ 月光秘法师
      回复
  • 韭菜盒子精
    韭菜盒子精 游客

    这RSA例子数字小得我都想手算了😂

    中国北京
    回复
    • 午夜飞行
      午夜飞行 读者

      小数字例子确实适合理解原理,手算也没问题

      中国天津@ 韭菜盒子精
      回复