「万云科普」如何向非极客解释非对称加密[通俗易懂]

「万云科普」如何向非极客解释非对称加密[通俗易懂]from:https://mp.weixin.qq.com/s/E-i4a5sEKWRRq3f0zzXekQ解释的通俗易懂,mark一下。非对称加密其实并不如它听起来的那么复杂,我们只需要换个方式解释它,就能让不是极客的你也秒懂。为什么我想用一种通俗易懂的方式来解释深奥的非对称加密?是因为我正在研究一种会大量使用加密的产品,我自己最近不止一次向朋友解释非对称加密,而令我惊讶的是,网上所搜索到的任…

大家好,又见面了,我是你们的朋友全栈君。

from:https://mp.weixin.qq.com/s/E-i4a5sEKWRRq3f0zzXekQ

解释的通俗易懂,mark 一下。

非对称加密其实并不如它听起来的那么复杂,我们只需要换个方式解释它,就能让不是极客的你也秒懂。


为什么我想用一种通俗易懂的方式来解释深奥的非对称加密?是因为我正在研究一种会大量使用加密的产品,我自己最近不止一次向朋友解释非对称加密,而令我惊讶的是,网上所搜索到的任何相关信息都让它看起来更加复杂,但事实并非如此。


下面进入正题。


首先,让我们先了解下“对称”加密是如何工作的


老王有一个带锁的盒子,同时老王也有一把属于自己的钥匙可以开关这个盒子。当老王想要保存某些重要物品在盒子中,他会将其上锁;只有他或其拥有备份钥匙的人才能打开盒子。


这就是对称加密:你有一把钥匙,你用它来关锁(加密)和开锁(解密)你的盒子(数据)。


对称加密很好懂对不对,现在让我们在此基础上来看看非对称密码学是如何工作的


小明也有一个盒子,这个盒子比老王的更高级一点,因为这是一个带有特殊锁的盒子。

它特殊在何处呢?

直接看图▼


「万云科普」如何向非极客解释非对称加密[通俗易懂]

                         

从上图可以看出小明的盒子上的锁有三种状态:A(锁定),B(解锁)和C(锁定),一定要记住这三个字母分别代表的状态。


同时,小明的盒子配有两把不同的钥匙。


第一个把钥匙只能顺时针转动,从A转到B转到C,第二把钥匙只能逆时针转动,从C转到B转到A。


小明从这两把钥匙中挑选第一把钥匙归自己所有,这就是小明的私钥,只有小明配拥有它,为了保护好盒子,小明一般都把私钥藏到别人找不到的地方。


小明盒子的第二把钥匙是 “公开”钥匙:他把第二把钥匙复制了一百把(也可以更多),给了他的朋友和家人,在办公室的桌上也留下了一把,甚至直接挂了一把在办公室门外。


现在,我们整理一下思路,小明的私钥,可以从A转到B到C,只归他个人所有;小明的公钥,可以从C转到B到A,其他人只要想要都可以获得。(不明白的老铁可以再看下上文的图)


小明的盒子特殊之处我们搞清楚了,那小明可以利用这个盒子做什么羞羞的(正经的)的事情呢?

「万云科普」如何向非极客解释非对称加密[通俗易懂]


直接来举个例子!

你想发送一个链圈大佬的大八卦给小明,但是又不想让别人知道。如何是好呢?

你想起小明有个特殊的盒子!

「万云科普」如何向非极客解释非对称加密[通俗易懂]


于是你将这个八卦放在小明的盒子中,并用小明的公钥副本将盒子上的锁从C转到B转到A,这时候文件就被锁在了盒子里(A的状态是锁定)。是的,你清楚地记得:小明的公钥只能逆时针旋转,所以你把它转到位置A,现在这个八卦就被锁定了。


然后??????


小明回来了,他用他的私钥把盒子上的锁从A转到B,B的状态是解锁,盒子打开了!小明看到了八卦,没想到他崇拜的链圈大佬居然做出这种事???

「万云科普」如何向非极客解释非对称加密[通俗易懂]


所以到底是什么大八卦???通过这个盒子来传递信息,只有小明和你知道。

因为,这个盒子唯一可以顺时针从A转到B的钥匙是小明的私钥


是不是豁然开朗! 这就是我们所说的公钥加密,也就是非对称加密:每个拥有小明公钥的人(很容易找到它的一个副本,他到处都放了,记得吗?)可以将文档放在他的盒子中,从C转到B转到A,形成锁定状态;而最终能解锁的人只有小明,因为小明的私钥是从A开始转,转到B就解锁了。所以就算有人想知道你到底发了什么八卦给小明,也无法获取哦!


知道这个原理的你,八卦之心碎了一地。

「万云科普」如何向非极客解释非对称加密[通俗易懂]


那,小明这个特殊的盒子还能做什么呢?


再来举个例子!

假设小明在盒子中放置了一个文件并用他的私人钥匙将锁转到位置C来锁定。

可是小明为什么要这样做?????毕竟,任何拥有公钥的人都可以从C转到B,然后解锁它!

等等!一定有什么我没发现的重要线索!

「万云科普」如何向非极客解释非对称加密[通俗易懂]


果然,有人送给我一个盒子,他说这是小明的,但是我并不能确认这个盒子就是小明的,为了验证它,我从保存各种好朋友公钥的抽屉里挑选小明的公钥,然后尝试我右转,盒子一动不动;然后我尝试左转,砰!箱子打开!于是我验证了这个盒子确实是属于小明的。


小明通过私钥加密这个方式证明是他自己而不是其他任何人把文件放在箱子里。我们把这个证明方式称之为“数字签名”


好了,今天的例子就到这里,我们言归正传。


在数字世界中,“钥匙(keys)”其实就是数字,有长有短。您可以将您的私钥,其实就是一串数字保存在文本文件或特殊应用程序中。 你可以把你的公钥,也是一个很长的数字,放在你的电子邮件签名中,你的网站等等公开的地方。而且不需要特殊的盒子,你只需用一个应用程序和你的钥匙来“锁定”和“解锁”文件(或数据)。


如果任何人,即使是你,用你的公钥加密(锁定),也就逆时针转到锁定状态A,只有你可以用你的私钥解密(解锁),因此别人通过公钥传送给你的加密文件,只有你能够解密,相信第一个例子已经解释得很清楚了。


如果你用你的私钥加密(锁定),也就是转到锁定状态C,任何人都可以解密(解锁),这可以作为你对它加密的证据:它就是你的“数字签名”。


还有许多更为复杂的场景:我们可以使用我们的私钥来签名文件,然后使用其他人的公钥对其进行加密,以便只有他可以读取它。 一个用户或一个组织可以对其他用户的密钥进行数字签名,以验证其真实性等等。但是,所有这些实际上都是使用一个或另一个密钥并将其放入其他盒子中,不属于这篇文章的讨论范围。


今天万云的技术科普就到这,关于密码学还有任何你想了解的,都可以通过后台留言小编。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137359.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • vc++连接sql数据库_vscode怎么连接数据库

    vc++连接sql数据库_vscode怎么连接数据库vc连接mysql数据库的方法:首先打开VC6;然后在中间列表框中添加本地安装MySQL的include目录路径;接着选中“Libraryfiles”并添加MySQL的Lib目录路径;最后进行编程测试即可。一、MySQL的安装Mysql的安装去官网下载就可以。。。最新的是5.7版本。。二、VC6.0的设置(1)打开VC6.中选0工具栏Tools菜单下的Options选项,在Directorie…

  • Android读取网络图片

    Android读取网络图片

  • Attempt to invoke virtual method on a null object reference 完美解决

    Attempt to invoke virtual method on a null object reference 完美解决

  • 数字游戏13524_数字表达

    数字游戏13524_数字表达由于科协里最近真的很流行数字游戏。某人又命名了一种取模数,这种数字必须满足各位数字之和 mod N 为 0。现在大家又要玩游戏了,指定一个整数闭区间 [a.b],问这个区间内有多少个取模数。输入格式输入包含多组测试数据,每组数据占一行。每组数据包含三个整数 a,b,N。输出格式对于每个测试数据输出一行结果,表示区间内各位数字和 mod N 为 0 的数的个数。数据范围1≤a,b≤231−1,1≤N<100输入样例:1 19 9输出样例:2#include<bits

  • 安全U盘市场分析_安全U盘

    安全U盘市场分析_安全U盘**定义:**采用授权管理、访问控制、数据加解密等机制,实现对全盘或部分数据加密保护、授权控制及限制分发等功能。另外,自带的网络监控系统可以随时监测U盘所在网络的状态,实现外网阻断。有效防止U盘交叉使用,阻止U盘木马和病毒危害。从根本上杜绝了U盘泄密的途径,净化了U盘的使用环境。通用功能:1.数据透明加解密采用专用智能控制与存储芯片实现软硬件相结合的数据加密技术,在写入与读出过程中实时进行加…

  • python生成exe文件运行闪退解决方法

    python生成exe文件运行闪退解决方法**python生成exe文件运行闪退解决方法:**用python写了一个程序,在python下运行是正常的,但是生成exe文件后运行闪退我当时怀疑是不是脱离的python解释器就运行不了的问题,网上找了一通也没有解决。1.可能是程序运行结束,窗口自然就默默离开了。那么在源程序中加入用户输入字符后结束程序。input(“输入任意字符结束“)这样的。2.你编译成.exe的python程序…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号