前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >对称、非对称公钥加密是如何工作的?

对称、非对称公钥加密是如何工作的?

作者头像
区块链大本营
发布于 2020-02-25 03:26:57
发布于 2020-02-25 03:26:57
8140
举报
文章被收录于专栏:区块链大本营区块链大本营

作者 | Shiva Sai Kumar B

翻译 | 火火酱,责编 | Carol

出品 | 区块链大本营(ID:blockchain_camp)

加密技术让区块链技术变得更加强大,并逐渐从其他技术中脱颖而出。密码学使用了先进的数学原理和方法来传输和存储数据,这种存储方式要求只有数据接收者才能对数据进行读取和处理。

“加密是密码学的核心概念——它以一种‘除了接收者以外没有任何人可以解密’的方式对消息进行编码,因为其他人无法理解消息格式,所以它可以防止数据被窃听者窃听。”

先快速介绍一下加密技术。凯撒(Caesar)首先使用凯撒密码来加密他的消息:将纯文本加密为密文,然后通过通信通道发送,中间过程中没有任何窃听者能够阅读和理解该文本。当在接收器端进行接收时,密文将被解密为纯文本。

加密技术的两种类型:

1. Symmetric cryptography 对称加密

2. Asymmetric cryptography 非对称加密

对称加密技术

对称加密技术与凯撒密码技术相同,使用单个密钥来对数据进行加密和解密。为了更好地理解这一过程,我将这一过程可视化为下图:

但对称加密也存在缺陷。

发送方和接收方都必须使用相同的密钥。使用相同的密钥虽然也可以,但是其中存在一个问题是我们如何在共享密钥的同时保证密钥不被窃听者拦截?

假设我们要用对称加密技术传输数据,并保证数据不被其他人截获,那么我们就必须要将密钥共享给接收者。如果接收者住在附近,我们可以直接用信封或其他线下办法把密钥交给他,但是如果接收者来自其他州或其他国家的话该怎么办?在这种情况下,发送密钥的任务变得十分困难,因此要克服此问题,就要用到另一种名为“非对称加密”的技术。

我们在区块链技术中使用的正是这种非对称加密技术。

非对称加密技术

非对对称加密技术使区块链技术的机制更加稳健,并且解决了对称加密技术的弊端。

“非对称加密技术比对称加密技术稍微复杂一点,二者之间的主要区别是:对称加密使用共享密钥来解密数据,非对称加密使用密钥对来解密数据”。

密钥对由两部分组成:公钥私钥

下面我们以Gmail为例,假设我们需要向个人或公司发送邮件:

1. Gmail的每个用户都有自己的的用户名和密码。

2. 用户通过接收者的用户名发送信息。

3. 接收者收到来自发送者的信息,并读取内容。

同样的过程也适用于非对称加密技术。

“每个用户都有像自己用户名一样的公钥,所有人都能看到,但无权访问其中的数据。私钥就像你的邮箱密码一样,帮助你将数据发送给另一个人”。

要想发送数据,首先,我们要有私钥(即密码)以及接收者的公钥(即用户名),这使加密技术变得更加复杂。

然后,接收者使用其私钥(即密码)和发送者的公钥(即用户名)来对数据进行解密。这保证了数据在传输过程中免受窃听者的攻击,该加密系统也变得更加坚固。

不需要中间人,我们就可以将数据发送给这个世界上的任何人。

同样,为了更好地理解该过程,我也将其可视化为下图:

数字签名

现在,当你要通过邮箱ID发送邮件时,接收者通过查看用户名就能知道你是发件人。没有密码的话是无法发送数据的,即你要为通过自己的用户名发送的任何邮件负责。因为没有密码的话,任何人都无法进入你的帐户。

同样,如果没有私钥,就没有人可以通过你的公钥发送消息。通过你的公钥发送信息的只能是你一人,其他人都无法过你的地址发送消息。只不过我们必须更加小心一点,因为对于Gmail来说,我们可以通过中央数据库来检索密码,但是区块链是分散的,因此你要更小心谨慎地保存好自己的私钥。

当我们通过私钥发送数据时,该数据会由我们的数字签名进行签名并且具有不可抵赖性,这意味着发送消息的人必须拥有私钥才可以。

“如果你使用私钥加密(“锁定”)了某物,则任何人都可以对其进行解密(“解锁”),但这可以作为对其进行加密的证据:该物已由你进行“数字签名”的。”

——PanayotisVryonis

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

本文分享自 区块链大本营 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
前端成神之路-WebAPIs03
node.removeChild() 方法从 node节点中删除一个子节点,返回删除的节点。
海仔
2020/12/29
3K0
原生 JS DOM 常用操作大全
页面中所有的内容都为节点,节点使用 node 来表示 DOM 树可以把节点划分为不同的层级关系,常见的是父子兄层级关系
FGGIT
2024/10/15
2730
js 事件笔记
在Web中, 事件在浏览器窗口中被触发,执行事先绑定的事件处理器(也就是事件触发时会运行的代码块),对事件做出响应。 用户在浏览器的任何一个操作都会去触发一个事件,JavaScript采用异步事件驱动编程模型,当文档、浏览器、元素或与之相关对象发生特定事情时,浏览器会产生事件。
bamboo
2019/01/29
11.3K0
js 事件笔记
webAPIs02-事件
​ 就是让程序监测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为 绑定事件 或者 注册事件。
yuanshuai
2022/08/17
8010
webAPIs01-声明变量、元素、定时器
严格意义上讲,我们在 JavaScript 阶段学习的知识绝大部分属于 ECMAScript 的知识体系,ECMAScript 简称 ES 它提供了一套语言标准规范,如变量、数据类型、表达式、语句、函数等语法规则都是由 ECMAScript 规定的。浏览器将 ECMAScript 大部分的规范加以实现,并且在此基础上又扩展一些实用的功能,这些被扩展出来的内容我们称为 Web APIs。
yuanshuai
2022/08/17
8060
webAPIs01-声明变量、元素、定时器
JS快速入门(二)
和 innerHTML 类似,写入内容如果包含 html 标签字符串,会被解析成对应的 html 标签,document.write()根据运行时机,会写入文档不同的位置
HammerZe
2022/03/24
6.7K0
JS快速入门(二)
JavaScript
e.stopPropagation(); // stop 停止 Propagation 传播 下列代码为例,当点击父盒子中的son盒子时,不阻止事件冒泡,会发生弹出三个提示框(son、father和document),阻止事件冒泡后,父亲元素不在冒泡弹出框。只弹出son提示框。
roydonGuo
2022/11/02
1.2K0
JavaScript
webapi(二)- 事件
让浏览器检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应 也称为注册事件
且陶陶
2023/04/12
7680
webapi(二)- 事件
前端成神之路-WebAPIs04
​ BOM(Browser Object Model)即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是 window。
海仔
2020/12/29
1.5K0
WEB API教程
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
张哥编程
2024/12/13
1680
WEB API教程
JavaScript(进阶)
正则用来定义一些字符串的规则,程序可以根据这些规则来判断一个字符串是否符合规则, 也可以将一个字符串中符合规则的内容提取出来。
神葳
2021/01/22
1.5K0
webapi(五)- 事件对象
当一个元素的事件被触发时,同样的事件将会在该元素的所有祖先元素中依次被触发。这一过程被称为事件冒泡
且陶陶
2023/04/12
1.1K0
webapi(五)- 事件对象
「Web编程API」- 03
请注意,本文编写于 2091 天前,最后修改于 174 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
1.5K0
「Web编程API」- 03
JavaScript进阶内容——DOM详解
JavaScript使我们有能力创建动态页面,而事件就是被JavaScript所侦测到的行为。
秋落雨微凉
2022/10/25
1.5K0
JavaScript进阶内容——DOM详解
前端学习笔记之BOM和DOM
到目前为止,我们已经学过了JavaScript的一些简单的语法。但是这些简单的语法,并没有和浏览器有任何交互。
Jetpropelledsnake21
2019/02/15
1K0
C1 能力认证——Web进阶
C1 能力认证——Web进阶 DOM节点操作-上 名称 描述 getElementById() 获取带有指定id的节点 getElementsByTagName() 获取带有指定标签名的节点集合 querySelector() 获取指定选择器或选择器组匹配的第一个节点 querySelectorAll() 获取指定选择器或选择器组匹配的所有节点集合 除了函数方法,我们还可以使用属性来获取节点信息,下表介绍了一些获取元素节点信息常用的属性。 名称 描述 innerHTML 返回元素内包含的所有HTML
HammerZe
2022/03/24
3.3K0
C1 能力认证——Web进阶
事件高级
eventTarget.addEventListener()方法将指定的监听器注册到 eventTarget(目标对象)上,当该对象触发指定的事件时,就会执行事件处理函数。
星辰_大海
2020/09/30
1.5K0
2019年初 JS面试必考(概率大)的面试题
javascript 创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用 JSON;但写法有很多种,也能混合使用
acc8226
2022/05/17
1K0
2019年初 JS面试必考(概率大)的面试题
前端成神之路-WebAPIs06
回调函数原理:函数可以作为一个参数。将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数,这个过程就叫做回调。
海仔
2021/01/05
1.4K0
前端成神之路-WebAPIs06
事件
JavaScript与HTML之间的交互式通过事件实现的。 事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间。可以使用侦听器(或处理程序)来预订事件,以便事件发生时执行相应的代码。
奋飛
2019/08/15
3.4K0
相关推荐
前端成神之路-WebAPIs03
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档