本文首发于深刻浅出区块链社区
原文连接:非对称加密技术 - RSA算法数学原理分析原文已更新,请读者前往原文阅读非对称加密技术,在如今网络中,有很是普遍应用。加密技术更是数字货币的基础。算法
所谓非对称,就是指该算法须要一对密钥,使用其中一个(公钥)加密,则须要用另外一个(私钥)才能解密。
可是对于其原理大部分同窗应该都是只知其一;不知其二,今天就来分析下经典的非对称加密算法 - RSA算法。
经过本文的分析,能够更好的理解非对称加密原理,可让咱们更好的使用非对称加密技术。安全
题外话:
本博客一直有打算写一系列文章通俗的密码学,昨天给站点上https, 因其中使用了RSA算法,就查了一下,发现如今网上介绍RSA算法的文章都写的太难理解了,反正也准备写密码学,就先写RSA算法吧,下面开始正文。网络
RSA算法的基于这样的数学事实:两个大质数相乘获得的大数难以被因式分解。
如:有很大质数p跟q,很容易算出N,使得 N = p * q,
但给出N, 比较难找p q(没有很好的方式, 只有不停的尝试)函数
这其实也是单向函数的概念
下面来看看数学演算过程:学习
一、 选取两个大质数p,q,计算N = p q 及 φ ( N ) = φ (p) φ (q) = (p-1) * (q-1)区块链
三个数学概念:
质数(prime numbe):又称素数,为在大于1的天然数中,除了1和它自己之外再也不有其余因数。
互质关系:若是两个正整数,除了1之外,没有其余公因子,咱们就称这两个数是互质关系(coprime)。
φ(N):叫作欧拉函数,是指任意给定正整数N,在小于等于N的正整数之中,有多少个与N构成互质关系。加密若是n是质数,则 φ(n)=n-1。
若是n能够分解成两个互质的整数之积, φ(n) = φ(p1p2) = φ(p1)φ(p2)。即积的欧拉函数等于各个因子的欧拉函数之积。
二、选择一个大于1 小于φ(N)的数e,使得 e 和 φ(N)互质spa
e实际上是1和φ(N)以前的一个质数
三、 计算d,使得de=1 mod φ(N) 等价于方程式 ed-1 = k φ(N) 求一组解。code
d 称为e的模反元素,e 和 φ(N)互质就确定存在d。blog
模反元素是指若是两个正整数a和n互质,那么必定能够找到整数b,使得ab被n除的余数是1,则b称为a的模反元素。
可根据欧拉定理证实模反元素存在, 欧拉定理是指若n,a互质,则:![]()
a^φ(n) ≡ 1(mod n) 及 a^φ(n) = a * a^(φ(n) - 1), 可得a的 φ(n)-1 次方,就是a的模反元素。
四、 (N, e)封装成公钥,(N, d)封装成私钥。
假设m为明文,加密就是算出密文c:
m^e mod N = c (明文m用公钥e加密并和随机数N取余获得密文c)
解密则是:
c^d mod N = m (密文c用密钥解密并和随机数N取余获得明文m) > 私钥解密这个是能够证实的,这里不展开了。
具体仍是来看看步骤,举个例子,假设Alice和Bob又要相互通讯。
假如攻击者能截取到公钥n=3127,e=3及密文c=1394,是仍然没法不经过d来进行密文解密的。
那么,有无可能在已知n和e的状况下,推导出d?
1. ed≡1 (mod φ(n))。只有知道e和φ(n),才能算出d。 2. φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。 3. n=pq。只有将n因数分解,才能算出p和q。
若是n能够被因数分解,d就能够算出,所以RSA安全性创建在N的因式分解上。大整数的因数分解,是一件很是困难的事情。
只要密钥长度足够长,用RSA加密的信息其实是不能被解破的。
☛ 深刻浅出区块链 - 系统学习区块链,打造最好的区块链技术博客。
☛ 个人知识星球为各位解答区块链技术问题,欢迎加入讨论。
☛ 关注公众号“深刻浅出区块链技术”第一时间获取区块链技术信息。