公钥密码体制-RSA (一)

什么是公钥密码体制?

背景

一般我们理解的密码体制都是通信双方都拿着相同的密钥,发送方用该密钥对想要通信的内容进行加密,接收方用相同的密钥进行解密,这种方式叫做对称加密。
而如果有一种加密机制是,通信双方各持有一对密钥中的一个,发送方用其中一对密钥加密,接收方只能用该密钥对中的另一个解密,这种体制就叫做公钥密码体制,一般发送方持有的叫公钥,接收方解密密钥叫私钥。

好处及用途

  • 对称加密需要双方协商一个密钥,协商和传输的过程的安全性得不到保障
  • 可以进行普通点对点加密,知道对方公钥即可
  • 通信中的节点都具有唯一私钥,所以可以用其私钥做数字签名,证明身份
  • 公钥密码体制性能较差,通信时一般用对称加密,所有公钥密码算法需要能够作密钥交换

RSA

RSA (Rivest-Shamir-Adleman) 算法是满足上面所有优点的一个优秀算法。被广泛运用于现代互联网通信基础。
如果对怎么做到用一个公钥进行加密,用另一个私钥进行解密比如好奇,也想了解一下是什么样的算法支撑起现在互联网通信的基石,可以继续往下看。当然需要掌握一些基础的数论知识。

基础的数论知识

数论主要关心的是素数。以及围绕它展开的模运算(可简单理解为取余)及各种定理,仅此知识就够了。

模运算

如果 a = q n + r a = qn + r a=qn+r, 则 a ≡ r   ( m o d   n ) a \equiv r \, (mod\,n) ar(modn) a   m o d   n = r a\,mod\,n = r amodn=r,如果 ( a   m o d   n ) = ( b   m o d   n ) (a \, mod\, n) = (b\,mod\,n) (amodn)=(bmodn), 则称 a 和 b 是模 n 同余的,表示为 a ≡ b ( m o d   n ) a\equiv b(mod\,n) ab(modn)
也可以反推,举例为如果 a   m o d   n = 1 a\,mod\,n = 1 amodn=1, 那么 a = q n + 1 a = qn + 1 a=qn+1, q 为整数。
模运算的一些基本法则:

  • [ ( a   m o d   n ) + ( b   m o d   n ) ]   m o d   n = ( a + b )   m o d   n [(a\,mod\,n) + (b\,mod\,n)]\,mod\,n = (a + b)\,mod\,n [(amodn)+(bmodn)]modn=(a+b)modn
  • [ ( a   m o d   n ) − ( b   m o d   n ) ]   m o d   n = ( a − b )   m o d   n [(a\,mod\,n) - (b\,mod\,n)]\,mod\,n = (a - b)\,mod\,n [(amodn)(bmodn)]modn=(ab)modn
  • [ ( a   m o d   n ) ∗ ( b   m o d   n ) ]   m o d   n = ( a ∗ b )   m o d   n [(a\,mod\,n) * (b\,mod\,n)]\,mod\,n = (a * b)\,mod\,n [(amodn)(bmodn)]modn=(ab)modn

欧拉定理

欧拉函数

ϕ ( n ) \phi(n) ϕ(n) 就是欧拉函数,它是指小于 n 且与 n 互素的正整数的个数。(互素是指两个数之间只有一个公因素1)。
比如 ϕ ( 7 ) = 6 \phi(7) = 6 ϕ(7)=6,因为 7 是素数,所以 1~6 都与它互素,一共 6 个。
再比如 ϕ ( 6 ) = 2 \phi(6) = 2 ϕ(6)=2, 因为只有 1 和 5 与它互素,一共 2 个。

欧拉定理

对于任意互素的 a 和 n,有:
a ϕ ( n ) ≡ 1 ( m o d   n ) a ^ {\phi(n)} \equiv 1 (mod\,n) aϕ(n)1(modn)
并且可以证明对于两个素数 p , q p,q p,q p ≠   q p\neq\,q p=q, 那么对于 n = p q n=pq n=pq
ϕ ( n ) = ϕ ( p q ) = ϕ ( p ) ∗ ϕ ( q ) = ( p − 1 ) ∗ ( q − 1 ) \phi(n)=\phi(pq)=\phi(p)*\phi(q)=(p-1)*(q-1) ϕ(n)=ϕ(pq)=ϕ(p)ϕ(q)=(p1)(q1)

掌握上以基础就能来看 RSA 算法的神奇之处了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值