RSA 与 ECC

RSA 与 ECC

RSA

利用最大素数分解原理

1. p,q

第一步:选取 p 和 q. 越大越好。 p, q 为不相等的质数.

2. n

第二步:n = p * q

3. m

第三步:计算m。 m 是小于或者等于 n 的正整数中与 n互为质数的个数. 利用欧拉函数: m = (p - 1) * (q - 1)

4. e

第四步:计算 e. e 满足 1 < e < m, 且与 m 互为质数的随机数.

5. d

第五步:计算d. d 满足 (e * d)% m = 1, 就是求二元一次方程组的解; 利用的是扩展欧几里函数

6.如何加密?

利用费儿马小定理两端一致性.

得到公钥 (n, e) 私钥 (n, d)

利用公钥(n, e) 进行加密: 明文 a = 123,进行加密: 密文 b = (a ^ e) % n

利用私钥(n, d)解密: a = (b ^ d) % n

7. 如何保证安全

如果想破解密文就需要 d, 由 第 5 步可知,需要d就需要知道 m,需要 m 就需要 p 和 q, 需要q 就需要对 n 进行因式分解. 如果 n 越大因式分解越困难。通常RSA 的加密位数是 1024 位.

ECC

1. 椭圆曲线方程:

y^2 = x^3 + ax + b, 且满足 4a^3 + 27b^2 ≠ 0的方程;

2. 阿贝尔群

  • 1、结合律
  • 2、交换律
  • 3、G 群, a,b ∈ G 必有 a + b ∈ G
  • 4、相反数, 曲线上一点 a, 必有 -a
  • 5、单位元 o, 满足 a + o = o + a = a

椭圆上的点属于阿贝尔群.

3. 代数加法

  • 已知点椭圆曲线上两点 P 和 Q, p ≠ -q. 那么必然会有一点 R -R = P + Q 如果 p = q, 那么必然会存在一点 R, 使得 2P = -Q, 这个时候 P 是一个切点

4. 标量积

3P = P + P + P

Avatar
尹玉广
iOS开发者

相关