概念小于 n 且和 n 互质的高频构成的聚众为 Zn因其中使用了RSA算法。汇新云。

原博客:
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(没有死好之方法, 只发生不停止的品味)

当即事实上呢是仅为函数的定义

下面来看看数学运算过程

  1. 摘两个大质数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)。即积的欧拉函数等于各个因子的欧拉函数之积。

  2. 挑一个大于1 仅次于φ(N)的数e,使得 e 和 φ(N)互质

    e其实是1及φ(N)之前的一个质数

  3. 计算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互质,则:图片 1
    a^φ(n) ≡ 1(mod n) 及 a^φ(n) = a * a^(φ(n) – 1), 可得a的
    φ(n)-1 次方,就是a的模反元素。

  4. (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又比方互通信。

  1. Alice 随机获得大质数P1=53,P2=59,那N=53*59=3127,φ(N)=3016
  2. 取一个e=3,计算出d=2011。
  3. 才将N=3127,e=3 作为公钥传为Bob(公钥公开)
  4. 要是Bob需要加密的明文m=89,c = 89^3 mod
    3127=1394,于是Bob传回c=1394。 (公钥加密过程)
  5. 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,代入欧拉定律即可验证。

补给模运算规则

  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
  2. 模运算乘法:
    (a * b) mod p = (a mod p * b mod p) mod p
  3. 模运算幂
    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互质,则:

图片 2

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?

图片 3

假使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


学好区块链,拥抱新前景:

区块链产品经理(点击入驻),与环绕内人士混个脸熟