RSA的算法介绍与数学原理

RSA

RSA是一种非对称加密!

非对称加密:
Alice与Bob直接传输消息,他们生成了两把钥匙,一把公钥,一把私钥,公钥给Alice,Alice使用公钥进行加密,而私钥只有Bob拥有,用来解密
加密过程:在接收消息前,Bob会生成两把钥匙,并将其中的公钥给Alice,Alice使用公钥将信息加密后传递给Bob,Bob收到信息后使用私钥进行解密,得到明文。

基本算法

1.乘法:两个质数相乘

2.伪随机数生成算法:生成伪随机数

3.Miller-Rabin测试:测试一个数是否为质数(单次测试的可信度不是特别高,需要用不同的参数进行多次独立测试)
基础理论:

(1)费马小定理:
p p p为质数,对于任意整数 a a a, a p − 1 ≡ 1 ( m o d    p ) a^{p-1}\equiv 1(mod \: \, p) ap11(modp)
a , p a , p a,p 互质,
a p − 1 ≡ 1 ( m o d    p ) a^{p-1}\equiv 1(mod \: \, p) ap11(modp),不能推出 p p p 是质数
(如:卡迈克尔数)

(2)二次探测:如果 p p p是一个素数,且 0 < x < p 0 < x < p 0<x<p,
则方程 x 2 ≡ 1 ( m o d    p ) x^{2}\equiv 1(mod\: \, p) x21(modp)的解为 x = 1 x = 1 x=1 x = p − 1 x = p - 1 x=p1

4.快速幂:快速计算 a x m o d n a^xmodn axmodn的值
扩展:取模运算的运算法则
( a + b ) % p = ( a % p + b % p ) % p (a + b)\% p = (a\% p + b\%p)\% p (a+b)%p=(a%p+b%p)%p

( a − b ) % p = ( a % p − b % p ) % p (a - b)\% p = (a\% p - b\% p)\% p (ab)%p=(a%pb%p)%p

( a ∗ b ) % p = ( a % p ∗ b % p ) % p (a * b)\% p = (a\% p * b\% p)\% p (ab)%p=(a%pb%p)%p

a b % p = ( ( a % p ) b ) % p a ^ b\% p = ((a\% p)^b)\% p ab%p=((a%p)b)%p

5.扩展欧几里得算法
欧几里得算法:
g c d ( a , b ) = g c d ( b , a % b ) gcd(a, b) = gcd(b , a\%b) gcd(a,b)=gcd(b,a%b)
扩展欧几里得算法:
求出 a ∗ x + b ∗ y = g c d a*x + b*y = gcd ax+by=gcd的通解

数学定理

1.欧拉函数:
φ ( n ) φ(n) φ(n) 表示小于n的正整数中与n互质的数的所有个数
且若 n n n能分解成两个质数 p 、 q p、q pq相乘就有
φ ( n ) = ( p − 1 ) ( q − 1 ) φ(n)=(p-1)(q-1) φ(n)=(p1)(q1)

2.欧拉定理:
对于任意互素的 a 和 n a和n an,有 a φ ( n ) ≡ 1 ( m o d    n ) a^{\varphi(n)}\equiv1(\mod n) aφ(n)1(modn)

3.同余定理:
2个不同的整数 a 、 b a、b ab,被一个整数 m m m相除时,得到相同的余数,那么可以称 a 、 b a、b ab同余
即: a ≡ b ( m o d m ) a≡b(mod m) ab(modm)

4.乘法逆元
a b ≡ 1 ( m o d m ) ab≡1(mod m) ab1(modm),则称 a 和 b a和b ab为关于 m m m互为乘法逆元

加密过程

公钥:(n,e)
私钥:(n,d)

1.找到两个大质数 p 、 q p、q pq(伪随机数生成算法+Miller-Rabin算法)

2.计算两个质数的乘积并计算其欧拉函数

3.构造一个整数 e e e
1 < e < φ ( n ) , 且 不 等 于 p 、 q 1<e<φ(n),且不等于p、q 1<e<φ(n),pq

4.求 e e e对于 φ ( n ) φ(n) φ(n)的乘法逆元 d d d( d d d只有私钥拥有者才知道)
e d ≡ 1 ( m o d φ ( n ) ) ed ≡ 1(mod φ(n)) ed1(modφ(n))
e d = k φ ( n ) + 1 ed=kφ(n)+1 ed=kφ(n)+1

5.对于与 n n n互素的 a a a
在这里插入图片描述

以上就是RSA整体的简单介绍,在了解基础算法和数学理论之后,我们可以更加清晰地了解整个加密过程,希望大家可以和我一起快乐地学习密码学。
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页