RSA加密原理与过程

本文详细介绍了RSA加密算法的基本数学概念,包括最大公因数、欧几里得算法、模反元素等。接着,概述了RSA加密算法的原理和秘钥生成步骤,并给出了加密和解密的数学表达式。通过举例说明了如何生成和使用RSA秘钥,还讨论了如何利用中国余数定理加速解密过程。最后,提供了C#语言的RSA加密代码实现。
摘要由CSDN通过智能技术生成

一、基本的数学概念与理论

  1. 最大公因数,又叫最大公约数,是指两个或多个整数共有约数中最大的一个,使用符号gcd来表示,例如gcd(a,b)表示a和b的最大公约数。
  2. 欧几里得算法又称辗转相除法,用于计算两个整数的最大公约数,公式表示为gcd(a,b)=gcd(b,a mod b)。
  3. 欧几里得扩展算法,对于不完全为 0 的非负整数 a,b,必然存在存在整数对 x,y ,使得 gcd(a,b)=ax+by。
  4. 最小公倍数,两个或多个整数公有的倍数叫做它们的公倍数,其中除0以为最小的一个公倍数就叫做这几个整数最小公倍数,使用符号lcm来表示,例如lcm(a,b)表示,a和b的最小公倍数。
  5. 质数,又称为素数,是指只能被1或自身整除的正整数。如果整数a和b的最大公约数为1,也就是gcd(a,b)=1,则称a和b互质。
  6. 同余,使用符号≡表示,假设m是大于1的正整数,a和b是整数,如果m|(a-b),则称a与b关于模m同余,记做a≡b(mod m),读作a同余于b模m。
  7. 模反元素,如果两个正整数a和n互质,那么一定能知道整数b,使得ab≡1(mod n),那么我们称b为a关于模n的模反元素。
  8. 欧拉函数,在数论中,对正整数n,小于n的正整数中与n互质的数目称为欧拉函数,使用符号φ(n)来表示。
  9. 费马小引理,假设a为不能被质数p整除的正整数,则必有a^(p-1)=1(mod p)。
  10. 欧拉定理又叫费马欧拉定理,假设a和n都是正整数,并且gcd(a,n)=1,则存在a^φ(n)≡1(mod n)。
  11. 中国余数理论(CRT),假设p和q是两个不同的质数,n=pq,对于任意两个数x1,x2,其中0 ≤ x1 < p, 0 ≤ x2 < q,必然存在唯一的数x,使得 x1 = x mod p 并且 x2 = x mod q。
  12. 算数基本定理又叫正整数唯一分解定理,对于任意自然数n(n>=2),均可分解为质数的乘积,如果不考虑排列顺序,该分解是唯一的。

二、RSA加密算法概要

非对称加密又叫公开秘钥加密,需要两个秘钥:公开秘钥(publickKey)和私有秘钥(privateKey)。公钥与私钥是一对儿,私钥由公钥决定,一般使用公钥加密,私钥解密,当然使用私钥加密,使用公钥解密也可以,但因为公钥是公开的,失去了加密的的意义。
RSA加密算法,是非对称加密的一种实现,是基于一个简单的数论事实,即将两个大的质数相乘非常容易,但是想要对其乘积进行因式分解为两个大的质数缺非常困难,因此可以将乘积公开作为加密秘钥,使用公式表示为(m^e)^d≡m(mod n),m表示消息,(n,e)表示公钥,(n,d)表示私钥,根据初等数论,即使知道e,n也很难推导出d。

三、RSA秘钥生成步骤

  1. 选取两个大的质数p和q,出于安全考虑p和q都要随机产生,并且足够大位数也要有差别。
  2. 计算n=pq,n被用做公钥和私钥的模数。一般以n的二进制表示的位数作为秘钥的长度。
  3. 计算欧拉函数φ(n)=(p-1)(q-1)。
  4. 选取一个整数e,使得e大于1小于 φ(n)并且gcd(e,φ(n))=1,也就是说e要与φ(n)互质。
  5. 计算d使得d*e≡ 1 (mod φ(n))。
  6. 使用(n,e)作为公钥,(n,d)作为私钥。

四、加密

假设M代表要加密的密文,需要将M转换为一个大数m,使用公钥(n,e)加密,加密后的密文用c来表示,公式表示如下:c≡m^e(mod n)

五、解密

使用私钥(n,d)来解密,公式表示如下:c^d≡(m^e)^d≡m(mod n)

六、例子

  1. 选取p=61,q=53
  2. 计算n=61*53=3233
  3. 计算欧拉函数φ(n)=(61-1)(53-1)=3120
  4. 选取一个数e,取自范围为(1,3120),并且要与3120互质,这里选取e=17
  5. 计算d,d*17≡1(mod 3120),根据欧几里得扩展算法,得到d等于2753
  6. 公钥加密c=m^17(mod 3233),假设m取65,c=65^17(mod 3233)=2790
  7. 私钥解密c^d≡2790^2753≡m^17^2790≡m(mod 3233)。

七、使用中国余数定理加快解密过程

  1. d mod (p-1) =2753 mod (61-1)=53,使用符号dp表示
  2. d mod(q-1)=2753 mod (53-1)=49,使用符号dq表示
  3. q^-1 mod p = 53 ^ -1 mod 61 = 38,使用符号qinv来表示,其实就是q的关于模p的模反元素。通过模反元素可以得到(qinv * q) mod p = 38 * 53 mod 61 = 1。下面是使用这些常数来计算m的过程:
m1 = c^dp mod p = 2790^
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值