欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

特点

最编程 2024-06-26 19:16:18
...

RSA 之所以叫非对称算法,是因为加密和解密的密钥不一样。任何一个密钥都可以用来加密。

公钥和私钥

通过私钥可以轻松计算出公钥,反之不行。

  1. 随机选择两个不相等的质数 p {\displaystyle p} p q {\displaystyle q} q p {\displaystyle p} p 不等于 q {\displaystyle q} q,计算 N = p q {\displaystyle N=pq} N=pq
    这里选择 103 和 349。 N = p q {\displaystyle N=pq} N=pq = 35947。 N {\displaystyle N} N 的长度就是密钥长度。35947 对应的二进制是 ‭1000110001101011‬,一共有 16 位,所以这个密钥就是 16 位。实际应用中 RSA 密钥一般是1024位。
  2. 计算 N {\displaystyle N} N 的欧拉函数 φ ( N ) {\displaystyle \varphi (N)} φ(N) r = φ ( 35947 ) = φ ( 103 ) φ ( 349 ) = ( 102 ) ( 348 ) = 35496 {\displaystyle r=\varphi (35947)=\varphi (103)\varphi (349)=(102)(348)=35496} r=φ(35947)=φ(103)φ(349)=(102)(348)=35496
  3. 选择一个小于 r {\displaystyle r} r 的整数 e {\displaystyle e} e,使 e {\displaystyle e} e r {\displaystyle r} r 互质,这里取 e = 773 {\displaystyle e=773} e=773
  4. e {\displaystyle e} e 关于 r {\displaystyle r} r 的模反元素,命名为 d {\displaystyle d} d(求 d {\displaystyle d} d e d ≡ 1 ( m o d r ) e d ≡ 1 ( m o d r ) {\displaystyle ed\equiv 1{\pmod {r}}} {\displaystyle ed\equiv 1{\pmod {r}}} ed1(modr)ed1(modr))。最终转为 773d-1=35496k 这个二元一次方程,求得一组解(d,k)=(45,1)。
  5. ( N , e ) {\displaystyle (N,e)} (N,e) 封装成公钥, ( N , d ) {\displaystyle (N,d)} (N,d) 封装成私钥。所以公钥就是 (35496 ,773),私钥就是(35496 , 45)。

加密和解密

用公钥加密时,私钥可以解密。反之亦然,私钥加密后的信息用公钥可以解密。

签名和验签