面中金问到,记录下:
知识梳理系列之六——HTTPS握手过程
使用RSA加密算法的HTTPS握手过程
1. 先梳理下RSA算法:
了解下素数、互素、欧拉公式、费马小定理:
- 如果一个正整数只能被自身和1整除,那么这个数是素数(或者称为质数);
- 如果两个或两个以上的正整数的公因数只有1,那么称这些数互素(或者称为互质);
- 已知两个素数P1、P2,它们的乘积: n = P 1 × P 2 ; n = P1 \times P2; n=P1×P2;欧拉公式: 欧拉函数的值是所有小于或等于n的正整数中与n互质的数的个数。 Φ ( n ) = ( P 1 − 1 ) ⋅ ( P 2 − 1 ) ; \Phi(n) = (P1-1) \cdot (P2-1); Φ(n)=(P1−1)⋅(P2−1);
- 费马小定理:假如m是一个整数,n是一个质数,那么 mn- m 是n的倍数,可以表示为:
m n ≡ m ( m o d n ) 或 m ( n − 1 ) ≡ 1 ( m o d n ) 又 ∵ n 是 质 数 , ∴ ( n − 1 ) = Φ ( n ) m Φ ( n ) ≡ 1 ( m o d n ) \begin{aligned} & m^n \equiv m \ (mod \quad n) \\ & 或 \ m^{(n-1)} \equiv 1 \ (mod \quad n) \\ & 又\because n是质数,\therefore (n-1) = \Phi(n) \\ & m^{\Phi(n)} \equiv 1 \ (mod \quad n) \\ \end{aligned} mn≡m (modn)或 m(n−1)≡