rsa大数加密c语言,c语言实现rsa加密算法过程详解

本文详细介绍了RSA加密算法的原理和实现过程,包括如何选择质数p、q,计算欧拉函数Φ(n),以及如何生成公钥和私钥。通过C语言实现加密和解密,展示了该算法的安全性和应用。
摘要由CSDN通过智能技术生成

一、RSA算法

首先, 找出三个数, p, q, r,

其中 p, q 是两个相异的质数, r 是与 (p-1)(q-1) 互质的数

p, q, r 这三个数便是 private key

接著, 找出 m, 使得 rm == 1 mod (p-1)(q-1)

这个 m 一定存在, 因为 r 与 (p-1)(q-1) 互质, 用辗转相除法就可以得到了

再来, 计算 n = pq

m, n 这两个数便是 public key

编码过程是, 若资料为 a, 将其看成是一个大整数, 假设 a 《 n

如果 a 》= n 的话, 就将 a 表成 s 进位 (s 《= n, 通常取 s = 2^t),

则每一位数均小於 n, 然後分段编码

接下来, 计算 b == a^m mod n, (0 《= b 《 n),

b 就是编码後的资料

解码的过程是, 计算 c == b^r mod pq (0 《= c 《 pq),

於是乎, 解码完毕 等会会证明 c 和 a 其实是相等的 :)

如果第三者进行窃听时, 他会得到几个数: m, n(=pq), b

他如果要解码的话, 必须想办法得到 r

所以, 他必须先对 n 作质因数分解</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值