RSA加密算法计算过程详解

一.RSA加密的核心原理

基于大数字分解的困难性,使用非对称(公钥和私钥)加密算法进行加解密,公钥公开分享,私钥保密,知道公钥很难推导出私钥,安全性比较高。


二.算法核心步骤

RSA算法主要有三大流程:密钥对生成、加密和解密三个阶段:

1.秘钥生成

2.加密过程:c = m^{e} mod(n)

3.解密过程:m = c^{e} mod (n)

n 表示模数,c 表示密文,m 表示明文。


三.加密算法计算过程:

一.生成密钥对

1.选取两个质数(p & q)

一般都是随机选择两个比较大并且不相等的质数 p 和 q,实际应用中会更大,为了方便推导和计算这里选取 p = 13 & q = 17。

2.计算模数 n

n = p\times q =13 \times 17=221

模数 n 就是密钥的长度,一般实际场景中 RSA 的长度是1024。

3.计算欧拉函数 \varphi (n)

先说计算结果:\varphi (221)=(13-1)\times (17-1)=192

 欧拉函数含义:求解在小于等于n的正整数之中,有多少个数和 n 是互质的关系?(假设 n = 10,在 1~10 之间有 1,3,7,9 四个数与 10 构成互质关系,所以计算结果为 4)

欧拉函数计算方式有三种:

a.如果 n 是质数,则 \varphi (n) = n - 1,因为每个质数只有 1 一个因子,所以除去本身有 n - 1 个。

b.一般情况下的计算方式:

如果 n 可分解为两个互质的整数乘积,则 \varphi (n) = (p-1)\times (q-1)。注意!这里 p 和 q 是互质关系,比如:

 \varphi (10) = (2-1)\times (5-1)=4

\varphi (6) = (2-1)\times (3-1)=2

c.如果 n 是一个质数的 k 次方,那么其计算方式为 \varphi (p^{k}) = p^{k}-p^{k-1},比如:

\varphi (16) = 2^{4}-2^{3} = 16 - 8 = 8

4.公钥指数 e

随机选取一个整数 e,要求 1< e< \varphi (n),并且 e 与 \varphi (n) 互质。这里选取 e = 7。

5.计算私钥指数 d

私钥指数 d 就是 e 对于 \varphi (n) 的模反指数,也就是 ed 可以被 \varphi (n) 除的余数为1,公式为:

ed\equiv 1(mod\varphi(n) )

就是解方程 7d\equiv 1mod 192,用扩展欧几里得算法求逆元,最终计算结果 d = 55。

6.最终获得密钥对:

公钥:(e,n) = (7,221)

私钥:(d,n) = (55,221)

二.加密过程

假设需要加密传送的信息为 m,且必须满足 m 为整数,0\leqslant m <n,这里选取 m = 8。

使用公钥加密过程:

c = m^{e} mod(n) = 8^{7}mod 221

// 密文计算过程
8^2 mod 221 = 64
8^4 mod 221 = (64)^2 mod 221 = 4096 mod 221 = 118
8^6 = 8^4 × 8^2 = 36 × 64 = 2304 mod 221 = 38
8^7 = 8^6 × 8 = 118 × 8 = 944 mod 221 = 83

最终得到密文 c = 83。

三.解密过程

使用私钥解密密文 c = 83:

m = c^{d} mod(n) = 83^{55}mod 221

// 分解模数 n = 221 = 13×17
m_p = 83^{55} mod 13
m_q = 83^{55} mod 17

// 简化指数
83^{55} mod 13 = (83 mod 13)^{55 mod 12} = 5^{7} mod 13
5^2 mod 13 = 25 mod 13 = 12
5^4 mod 13 = 25^2 mod 13 = 625 mod 13 = 1
5^6 mod 13 = 5^4 x 5^2 mod 13 = 1 x 12 mod 13 = 12
5^7 mod 13 = 5^6 x 5 mod 13 = 12 x 5 mod 13 = 60 mod 13 = 8
83^{55} mod 13 = 8 mod 13 = 8

// 计算 mod 17:
83^{55} mod 17 = (83 mod 17)^{55 mod 16} = 15^{7} mod 17
15^2 mod 17 = 225 mod 17 = 4
15^4 mod 17 = 225^2 mod 17 = 16
15^6 mod 17 = 15^4 x 15^2 mod 17 = 4 x 16 mod 17 = 64 mod 17 = 13
15^7 mod 17 = 15^6 x 15 mod 17 = 13 x 15 mod 17 = 195 mod 17 = 8
83^{55} mod 17 = 8 mod 17 = 8

// 合并结果(解同余方程组)
m ≡ 8 mod 13
m ≡ 8 mod 17

// 显然 m = 8 同时满足两个方程
// 固最终接还原明文为 8
m = 8
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值