原博客:
http://blog.csdn[.net](http://lib.csdn.net/base/dotnet)/ray58750034/archive/2006/03/27/640074.aspx
匪对如加密技术,在现行网络中,有十分广泛应用。加密技术更是数字货币的根底。
【汇新云】为大家定期更新文章,【汇新云】IT人的产业链平台
欧拉函数 :
欧拉函数是数论中杀重大之一个函数,欧拉函数是依:对于一个正整数 n ,小于
n 且和 n 互质的正整数(包括 1)的个数,记作 φ(n) 。
所谓非对称,就是负该算法需要一些密钥,使用其中一个(公钥)加密,则用用别样一个(私钥)才能够解密。
只是对其规律大部分同室应该都是均等了然半解,今天就来分析下经典的匪对如加密算法
统统余数集合:
概念小于 n 且和 n 互质的反复构成的会师为 Zn ,称呼是集为 n
的了余数集合。 显然 |Zn| =φ(n) 。
- RSA算法。
经过本文的解析,可以再好的了解不对如加密原理,可以被咱们重好之应用非对称加密技术。
对如加密技术,在今天网络中,有那个广泛应用。加密技术更是数字货币的基本功。
有关性质:
对素数 p ,φ(p) = p -1 。
于有数个例外素数 p, q ,它们的乘积 n = p * q 满足 φ(n) = (p -1) * (q
-1) 。
立即是为 Zn = {1, 2, 3, … , n – 1} – {p,
2p, … , (q – 1) * p} – {q, 2q, … , (p – 1) * q} , 则 φ(n) = (n –
1) – (q – 1) – (p – 1) = (p -1) * (q -1) =φ(p) * φ(q) 。
题外话:
并博客一直有打算写一名目繁多文章通俗的密码学,昨天为站点上https,
因内部使用了RSA算法,就翻开了瞬间,发现本网上介绍RSA算法的章都勾的极难理解了,反正也准备写密码学,就先行勾勒RSA算法吧,下面开始正文。
所谓非对称,就是靠该算法需要一些密钥,使用其中一个(公钥)加密,则需用别样一个(私钥)才能够解密。
欧拉定理 :
对于互质的正整数 a 和 n ,有 aφ(n) ≡ 1 mod n 。
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)互质
e其实是1及φ(N)之前的一个质数
-
计算d,使得d*e=1 mod φ(N) 等价于方程式 ed-1 = k * φ(N) 求一组解。
d 称为e的模反元素,e 和 φ(N)互质就必定存在d。
模反元素大凡指如果简单单正整数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)私钥解密之是可作证的,这里不开展了。
但对于其原理大部分同班应该还是同样懂得半解,今天即使来分析下经典的未对如加密算法
证明:
( 1 ) 令 Zn = {x1, x2, …, xφ(n)} , S = {a * x1 mod n, a * x2 mod n, … , a * xφ(n) mod n} ,
则 Zn = S 。
① 因为 a 与 n 互质, xi
(1 ≤ i ≤ φ(n)) 与 n 互质, 所以 a * xi 与
n 互质,所以 a * xi
mod n ∈ Zn 。
② 若 i ≠ j , 那么 xi ≠
xj,且由于 a, n互质可得 a * xi
mod n ≠ a * xj mod n (消去律)。
加解密步骤
切切实实或来瞧步骤,举个例子,假设Alice和Bob又比方互通信。
- Alice 随机获得大质数P1=53,P2=59,那N=53*59=3127,φ(N)=3016
- 取一个e=3,计算出d=2011。
- 才将N=3127,e=3 作为公钥传为Bob(公钥公开)
- 要是Bob需要加密的明文m=89,c = 89^3 mod
3127=1394,于是Bob传回c=1394。 (公钥加密过程) - Alice使用c^d mod N = 1394^2011 mod 3127,就能够取明文m=89。
(私钥解密过程)
设攻击者能截取到公钥n=3127,e=3及密文c=1394,是仍鞭长莫及不经过d来拓展密文解密的。
- RSA算法。
( 2 ) aφ(n) * x1
* x2
*… * xφ(n) mod n
≡ (a
* x1) * (a *
x2) * … * (a
* xφ(n)) mod n
≡ (a * x1
mod
n) * (a
* x2 mod n) * … * (a
* xφ(n) mod n) mod n
≡ x1
* x2 * … * xφ(n) mod n
对比等式的横两头,因为 xi (1
≤ i ≤ φ(n)) 与 n 互质,所以 aφ(n) ≡ 1 mod n (消去律)。
注:
消去律:如果 gcd(c,p) = 1 ,则 ac ≡ bc mod p ⇒ a ≡ b mod p 。
安全性分析
这就是说,有无可能以已掌握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加密的音讯实际是无可知让解破的。
经本文的分析,可以另行好之了解不对如加密原理,可以被咱还好的用非对称加密技术。
费马定理 :
而正整数 a 与素数 p 互质,则发 ap\ -\ 1 ≡ 1 mod p 。
证实这定律非常简单,由于 φ(p) = p
-1,代入欧拉定律即可验证。
补给模运算规则
- 模运算加减法:
(a + b) mod p = (a mod p + b mod p) mod p
(a – b) mod p = (a mod p – b mod p) mod p - 模运算乘法:
(a * b) mod p = (a mod p * b mod p) mod p - 模运算幂
a ^ b mod p = ((a mod p)^b) mod p
深入浅出区块链 –
系统学区块链,打造最好的区块链技术博客
题外话:
参考来源:
http://zhidao.baidu.com/question/15882452.html?si=2
连博客一直闹打算写一系列文章通俗的密码学,昨天让站点及https,
因其中使用了RSA算法,就翻了转,发现本网上介绍RSA算法的篇章还写的尽难理解了,反正也准备写密码学,就优先勾勒RSA算法吧,下面开始正文。
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
RSA算法原理
加:欧拉函数公式
RSA算法的根据这样的数学事实:两个大质数相就得到的造化难以被因式分解。
( 1 ) pk 的欧拉函数
于给定的一个素数 p , φ(p) = p -1。则对此刚刚整数 n = pk ,
φ(n) = pk - pk -1
证明:
小于 pk 的正整数个数为 pk - 1个,其中
和 pk 不互质的正整数有{p * 1,p * 2,...,p * (pk - 1-1)} 共计 pk - 1 - 1 个
所以 φ(n) = pk - 1 - (pk - 1 - 1) = pk - pk - 1 。
假若:有十分大质数p跟q,很轻算出N,使得 N = p * q,
( 2 ) p * q 的欧拉函数
假如 p, q是有限独互质的正整数,则 p * q 的欧拉函数为
φ(p * q) = φ(p) * φ(q) , gcd(p, q) = 1 。
证明:
令 n = p * q , gcd(p,q) = 1
根据中国余数定理,有
Zn 和 Zp × Zq 之间存在一一映射
(我的想法是: a ∈ Zp , b ∈ Zq ⇔ b * p + a * q ∈ Zn 。)
所以 n 的完全余数集合的元素个数等于集合 Zp × Zq 的元素个数。
而后者的元素个数为 φ(p) * φ(q) ,所以有
φ(p * q) = φ(p) * φ(q) 。
可让出N, 比较难以找p q(没有好好的方式, 只发生不停歇的品味)
( 3 ) 任意正整数的欧拉函数
轻易一个平头 n 都得以象征也其素因子的乘积为:
I
n = ∏ piki (I 为 n 的素因子的个数)
i=1
因前两单结论,很易得出它的欧拉函数为:
I I
Φ(n) = ∏ piki -1(pi -1) = n ∏ (1 - 1 / pi)
i=1 i=1
于任意 n > 2,2 | Φ(n) ,因为自然有
pi -1是偶数。
程序代码可参见:http://blog.csdn[.NET](http://lib.csdn.net/base/dotnet)/Rappy/archive/2007/08/16/1747489.aspx
当时其实为是单独为函数的概念
下来探望数学运算过程:
选取两独大质数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)互质
e其实是1暨φ(N)之前的一个质数
计算d,使得de=1 mod φ(N) 等价于方程式 ed-1 = k φ(N) 求一组解。
d 称为e的模反元素,e 和 φ(N)互质就势必存在d。
模反元素是借助如果简单独正整数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又如互通信。
Alice 随机获得大质数P1=53,P2=59,那N=53*59=3127,φ(N)=3016
取一个e=3,计算出d=2011。
就将N=3127,e=3 作为公钥传于Bob(公钥公开)
而Bob需要加密的明文m=89,c = 89^3 mod 3127=1394,于是Bob传回c=1394。
(公钥加密过程)
Alice使用c^d mod N = 1394^2011 mod 3127,就能得明文m=89。
(私钥解密过程)
只要攻击者能截取到公钥n=3127,e=3及密文c=1394,是仍鞭长莫及不通过d来展开密文解密的。
安全性分析
这就是说,有无可能于就知晓n和e的景况下,推导出d?
假使n可以为因数分解,d就可以算出,因此RSA安全性建立在N的因式分解上。大整数的因数分解,是一致桩好不便的工作。
若密钥长度足够长,用RSA加密的音讯实际是未可知为解破的。
补模运算规则
模运算加减法:
(a + b) mod p = (a mod p + b mod p) mod p
(a – b) mod p = (a mod p – b mod p) mod p
模运算乘法:
(a b) mod p = (a mod p b mod p) mod p
模运算幂
a ^ b mod p = ((a mod p)^b) mod p
学好区块链,拥抱新前景:
区块链产品经理(点击入驻),与环绕内人士混个脸熟。