前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何给产品经理解释什么是 RSA 加密(二)

如何给产品经理解释什么是 RSA 加密(二)

作者头像
青南
发布2020-03-26 14:45:33
3580
发布2020-03-26 14:45:33
举报
文章被收录于专栏:未闻Code
如何给产品经理解释什么是 RSA 加密(一

产品经理在铁盒子上面挂上一把锁,把铁盒子通过其他人转交给接收人。接收人再挂一把锁到铁盒子上,把盒子通过其他人转交给产品经理。产品经理解开自己的锁,把铁盒子再给接收人,最后接收人解开自己的锁。”

整个过程不需要涉及到钥匙的交换,也防止了铁盒子在传递的过程中被中间人打开。

然后我们使用乘法复现了这个过程。但使用乘法有一个致命的弱点:对于,已经知道b 和 c 了,自然就能求出。现在需要寻找一种数学计算方法,既满足交换率,同时它又不能反向计算。

显然加减乘除都不满足,因为他们可以反向计算。那么有什么运算不能反向计算呢?

不要忘记,我们的目标是让产品经理都能看懂,那么我们考虑一下小学、初中学过的数学运算中,哪一种运算不能反向计算呢?

答案就是求余数。

例如我们计算,100除以11,商为9,余数为1。现在我们知道了除数是11,余数是1,无法反向推断出被除数100.因为不知道商是多少。除以11能得到余数1的数有无数多个:1, 12, 23, 34, 45, ……

如果你觉得100除以11还太简单了,那么我们再看看余数为562求 。

现在,我们把这个被除数100改成一个指数幂的形式。其中,可以公开,需要保密。

我们构造一个计算公式:

其中,和都可以公开。产品经理与接收方都使用这两个数字。和的选择只有一个要求,必须比 小。仅此而已。而产品经理与接收方使用不同的,并且不需要交换,不需要告诉对方。

现在,我们假设,,随便选一个大数就可以了,例如产品经理的,接收方的,对于产品经理,余数为10:

对于接收方,余数为5:

这两个余数也可以公开传递,产品经理拿到接收人的余数5,接收人拿到产品经理的余数10.

现在,我们来看一个非常神奇的公式:

其中,是对方的余数。

先看产品经理这边,她拿到了接收方的余数5,于是做计算,得到余数25:

接收方使用产品经理原来的余数10进行计算:

你会惊讶地发现,两边计算出来的余数都是25.你可以多选几个不同的数据进行演算,你会发现最终两边总是可以得到相同的余数。

于是这个25——这个相同的余数就可以当做密码来做数据加密——产品经理用她最终计算出来的密码25对信息进行加密。接收方使用他最终计算出来密码25对密文进行解密。

在这个过程中,产品经理和接收方发送了几条所有人都可以看的公开信息,但却实现了密码交换。并且,这使用到的最难的数学知识,仅仅是初一(甚至有些人小学就学过,比如我)幂运算。

但是这种方式有一个缺点,就是一开始交换密码的过程,产品经理和接收人都必须在线,产品经理先把、以及自己计算的余数发送给接收方,接收方使用、计算自己的余数发给产品经理,接下来产品经理才能计算出真正的密码。如果接收方第一次返回信息给产品经理中间隔了比较长的时间,那么产品经理也要等很久才能进一步发送真正的消息。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 未闻Code 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档