非对称加密:RSA算法的原理

RSA算法的原理:

1、名词解释

名称解释
素数又称质数,指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
互质又称互素。若N个整数的最大公因子是1,则称这N个整数互质。
模运算即求余运算“模”是“Mod”的音译。和模运算紧密相关的一个概念是“同余”。数学上,当两个整数除以同一个正整数,若得相同余数,则二整数同余。例:3/2余1,5/2余1,3、5同余

2、欧拉函数

(比如,在1到8之中,有多少个数与8构成互质关系?)计算这个值的方法就叫做欧拉函数,以φ(n)表示。
例:计算8的欧拉函数,和8互质的 1、2、3、4、5、6、7、8
φ(8) = 4

如果n是质数的某一个次方     这里823次方
即      n = p^k (p为质数,k为大于等于1的整数)
则      φ(n) = φ(p^k) = p^k - p^(k-1)
也就是   φ(8) = φ(2^3) =2^3 - 2^2 = 8 -4 = 4
  • 如果n是质数的某一个次方,即 n = p^k (p为质数,k为大于等于1的整数),则φ(n) = φ(p^k) = p^k -
    p^(k-1)。也就是φ(8) = φ(2^3) =2^3 - 2^2 = 8 -4 = 4
  • 如果n是质数,则 φ(n)=n-1 。因为质数与小于它的每一个数,都构成互质关系。比如5与1、2、3、4都构成互质关系。
  • 计算56的欧拉函数 φ(56) = φ(8) * φ(7) = 4 * 6 = 24
    如果n可以分解成两个互质的整数之积,即 n = p* k ,则φ(n) = φ(p * k) = φ(p1)*φ(p2)

在这里插入图片描述
例如:5和7互质
在这里插入图片描述
那么5的6次方减去1可以被7整除
在这里插入图片描述
例如:8和5互质
那么8的5-1次方减1可以被5整除

3、模反元素

模反元素:如果两个正整数e和x互质,那么一定可以找到整数d,使得 ed-1 被x整除,或者说ed被x除的余数是1。
那么d就是e相对于x的模反元素。
在这里插入图片描述
例如:5和7互质,那么可以找到一个5*d-1除以7可以整除
在这里插入图片描述
这个等式成立有一个前提!就是关于模反元素的,就是当整数e和φ(n)互质!一定有一个整数d是e相对于φ(n)的模反元素。
我们可以测试一下。
m取值为4
n取值为15
φ(n)取值为8
e 如果取值为3
d 可以为 11、19…(模反元素很明显不止一个,其实就是解二元一次方程)
如果你测试了,那么你可以改变m的值试一下,其实这个等式不需要m和n 互质。只要m小于n 等式依然成立。
这里需要注意的是,我们可以看做 m 通过一系列运算得到结果仍然是 m。这一系列运算中,分别出现了多个参数n、φ(n)、e还有d。

m 的 e乘上d 次方为加密运算,得到结果 c
c 模以 n 为解密运算,得到结果 m
这似乎可以用于加密和解密。但这样,加密的结果会非常大。明文数据将非常小(虽然RSA用于加密的数据也很小,但是没这么大悬殊),真正的RSA要更加强大,那么RSA是怎么演变来的呢??

迪菲赫尔曼密钥交换

这个密钥交换当时轰动了整个数学界!而且对人类密码学的发展非常重要,因为这个伟大的算法能够拆分刚才的等式。当非对称加密算法没有出现以前,人类都是用的对称加密。所以密钥的传递,就必须要非常小心。
迪菲赫尔曼密钥交换 就是解决了密钥传递的保密性,我们来看一下
在这里插入图片描述

假设一个传递密钥的场景。算法就是用3 的次方去模以17。 三个角色

  • 服务器 随机数 15

这个15只有服务器才知道。通过算法得到结果 6 因为 3的15次方 mod 17 = 6 。然后将结果 6 公开发送出去,拿到客户端的 12 ,然后用12^15 mod 17 得到结果10(10就是交换得到的密钥)

  • 客户端 随机数13

客户端用3 的 13次方 mod 17 = 12 然后将得到的结果12公布出去。
拿到服务器的 6 ,然后用6^13 mod 17 得到结果10(10就是交换得到的密钥)

  • 第三者

第三者只能拿到6 和 12 ,因为没有私密数据13、15,所以它没法得到结果10。

为什么 6的13次方会和12的15次方得到一样的结果呢?因为这就是规律,我们可以用小一点的数字测试一下3^3 mod 17 = 10和10 ^ 2 mod 17 ; 3 ^ 2 mod 17 = 9和9^3 mod 17结果都是15。迪菲赫尔曼密钥交换最核心的地方就在于这个规律

在这里插入图片描述
在这里插入图片描述
现在我们知道了m^e % n = c是加密,c^d % n = m是解密,m就是原始数据,c是密文,公钥是n和e,私钥是n和d,所以只有n和e是公开的。加密时我们也要知道φ(n)的值,最简单的方式是用两个质数之积得到,别人想破解RSA也要知道φ(n)的值,只能对n进行因数分解,那么我们不想m被破解,n的值就要非常大,就是我们之前说的,长度一般为1024个二进制位,这样就很安全了。但是据说量子计算机(用于科研,尚未普及)可以破解,理论上量子计算机的运行速度无穷快,大家可以了解一下。
在这里插入图片描述
在这里插入图片描述

主要逻辑

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值