当前位置: 首页 > 编程日记 > 正文

公钥与私钥,HTTPS详解


1.公钥与私钥原理
1)鲍勃有两把钥匙,一把是公钥,另一把是私钥

2)鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。

3)苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。

4)鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

5)鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。


6)然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。

7)鲍勃将这个签名,附在信件下面,一起发给苏珊。

8)苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。


9)苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。


10)复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。


11)后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。


12)鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。


13)苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。

2.HTTPS详解
HTTP协议的网站容易被篡改和劫持,如一些不良的运营商会通过代理服务器在你的页面中植入广告等。
因此很多网站选择使用HTTPS协议。HTTPS协议通过TLS层和证书机制提供了内容加密,身份认证,数据完整性三大功能。

1)下面,我们看一个应用"数字证书"的实例:https协议。这个协议主要用于网页加密。


2)首先,客户端向服务器发出加密请求。


3)服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。


4)客户端(浏览器)的"证书管理器",有"受信任的根证书颁发机构"列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。


5)如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。

6)如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告

原文网址:http://www.youdzone.com/signature.html

相关文章:

【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)

http://acm.hdu.edu.cn/showproblem.php?pid4704 1.隔板原理 1~N有N个元素,每个元素代表一个1.分成K个数,即在(N-1)个空挡里放置(K-1)块隔板 即求组合数C(N-1,0)C(N-1,1)...C(N-1,N-1) 2.组合数求和公式 C(n,0)C(…

Vue 中 CSS 动画原理

下面这段代码&#xff0c;是点击按钮实现hello world显示与隐藏 <div id"root"><div v-if"show">hello world</div><button click"handleClick">按钮</button> </div> let vm new Vue({el: #root,data: {s…

【ACM】UVA - 340 Master-Mind Hints(一定要好好学英语...)

https://vjudge.net/problem/UVA-340 N 表示 密码的个数 第一行是正确的密码 下面的行直到N个0之前&#xff0c;都是猜测的序列&#xff0c;输出的括号&#xff08;A&#xff0c;B&#xff09; A表示对应位置与密码相符合的个数&#xff0c;B表示出现在序列中的数字但是位…

SLAM的前世今生

SLAM的前世 从研究生开始切入到视觉SLAM领域&#xff0c;应用背景为AR中的视觉导航与定位。 定位、定向、测速、授时是人们惆怅千年都未能完全解决的问题&#xff0c;最早的时候&#xff0c;古人只能靠夜观天象和司南来做简单的定向。直至元代&#xff0c;出于对定位的需求&a…

No resource found that matches the given name '@style/Theme.AppCompat.Light'

为什么80%的码农都做不了架构师&#xff1f;>>> Android导入项目时出现此问题的解决办法&#xff1a; 1.查看是否存在此目录&#xff08;D:\android-sdk\extras\android\support\v7\appcompat&#xff09;&#xff0c;若没有此目录&#xff0c;在项目右键Android T…

极限编程 (Extreme Programming) - 迭代计划 (Iterative Planning)

(Source: XP - Iteration Planning) 在每次迭代开始时调用迭代计划会议&#xff0c;以生成该迭代的编程任务计划。每次迭代为1到3周。 客户从发布计划中按照对客户最有价值的顺序选择用户故事进行此次迭代。还选择了要修复的失败验收测试。客户选择的用户故事的估计总计达到上次…

VINS-mono详细解读与实现

VINS-mono详细解读 VINS-mono详细解读 前言 Vins-mono是香港科技大学开源的一个VIO算法&#xff0c;https://github.com/HKUST-Aerial-Robotics/VINS-Mono&#xff0c;是用紧耦合方法实现的&#xff0c;通过单目IMU恢复出尺度&#xff0c;效果非常棒。 感谢他们开源&#x…

mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离

数据库性能优化普遍采用集群方式&#xff0c;oracle集群软硬件投入昂贵&#xff0c;今天花了一天时间搭建基于mysql的集群环境。 主要思路 简单说&#xff0c;实现mysql主备复制-->利用mycat实现负载均衡。 比较了常用的读写分离方式&#xff0c;推荐mycat&#xff0c;社区活…

【UVA/Codeforces】1584 Circular Sequence / 792B Counting-out Rhyme(就是一个圈儿...)

https://vjudge.net/problem/UVA-1584 1584 Circular Sequence 输入一个字符串&#xff0c;可以以字符串中任意一个字母作为起始&#xff0c;输出字典序最小的那个字符串 两种方法&#xff0c;一种是设两个标记 【样例输入】CGAGTCAGCT 【样例输出】AGCTCGAGTC 一开始 an…

一个free异常引发的异常

有同事反馈说自己的线程不工作&#xff0c;查看堆栈发现其打印如下&#xff1a; #0 0x00007f291f72e7be in __lll_lock_wait_private () from /lib64/libc.so.6 #1 0x00007f291f6c2e4e in _L_lock_9925 () from /lib64/libc.so.6 #2 0x00007f291f6c1101 in free () from /li…

欧拉角和旋转矩阵相互转换

目录 1.参考资料 2.变换矩阵/F/H的svd分解或者旋转矩阵、平移矩阵求解 3. 欧拉角和旋转矩阵可同样表示刚体在三维空间的旋转&#xff0c;下面分享这两者互相转换的方法和核心代码 1.参考资料 2.变换矩阵/F/H的svd分解或者旋转矩阵、平移矩阵求解 欧拉角转旋转矩阵 欧拉角…

【Codeforces】 2A - Winner (map)

http://codeforces.com/problemset/problem/2/A So, if two or more players have the maximum number of points (say, it equals to m) at the end of the game, than wins the one of them who scored at least m points first. 所以只有一个只有一个map不行&#xff0c;…

[译]Godot系列教程一 - 场景与节点

场景(Scene)与节点(Node) 简介 先设想有那么一瞬间你自己不再是一名游戏开发者了&#xff0c;而是一名大厨&#xff01; 你的装备换成了一套大厨的制服。不要考虑制作游戏的事情&#xff0c;你现在的职责是为你的顾客创建新的可口的食谱。 那么&#xff0c;大厨是怎样创建食谱的…

EOS与以太坊有哪些区别?

想知道更多关于区块链技术知识&#xff0c;请百度【链客区块链技术问答社区】 链客&#xff0c;有问必答&#xff01;&#xff01;EOS与以太坊有哪些区别&#xff1f; 以太坊是一个专门为开发和运行去中心化应用&#xff08;DAPP&#xff09;搭建的智能合约平台&#xff1b;EOS…

图像特征点检测与匹配评价准则——量化

欢迎转载&#xff0c;转载请注明出处&#xff0c;谢谢&#xff01; 目前图像匹配中&#xff0c;局部特征匹配占据了绝大部分&#xff0c;常用的局部特征匹配方法有Harris、SIFT、SURF、ORB等等&#xff0c;不同的特征点检测和匹配方法尤其独特的优势和不足&#xff1b; 特征点匹…

path,classpath

1.path作用. 在环境变量里面配置 winr 打开cmd qq窗口就弹开了。 2.classpath是java里的选项。 java执行java类的时候&#xff0c;会去看这个java类是否在classpath路径下。不在就不能编译转载于:https://www.cnblogs.com/shapeOfMyHeart/p/5975686.html

【Codeforces】401C Team (01010110...)

http://codeforces.com/contest/401/problem/C 题目中&#xff0c;n表示0的个数&#xff0c;m表示1的个数&#xff0c;要求两个0不能连续&#xff0c;三个1不能连续 还要判断能否输出满足要求的序列&#xff0c;不满足输出-1 满足条件以后徐瑶分情况讨论 当1比0多&#xff…

表白这件事,比解 bug 要难多少?

情人节快乐&#xff01;我是可爱无敌的阿里妹。 今天是个粉红色日子&#xff0c;我们来聊聊和技术无关的“技术活”&#xff0c;比如&#xff1a; “如何表白&#xff1f;” 当技术人碰上动心的姑娘&#xff0c;他的浪漫开关就打开了。 在代码王国里劈荆斩刺的王子&#xff0c;…

特征点匹配+特征检测方法汇总

特征点匹配特征检测方法汇总特征提取与匹配---SURF&#xff1b;SIFT&#xff1b;ORB&#xff1b;FAST&#xff1b;Harris角点匹配方法匹配函数1. OpenCV提供了两种Matching方式&#xff1a;• Brute-force matcher (cv::BFMatcher) //暴力方法找到点集1中每个descriptor在点…

元数据驱动的微服务架构(上)

本次分享有两个部分&#xff1a; 微服务架构需要元数据 介绍微服务与元数据的关系。 一、微服务架构需要元数据 企业IT架构已经发展了多个阶段&#xff0c;一方面是服务化架构的发展&#xff0c;在SOA阶段主要解决应用间集成问题&#xff0c;但随着企业业务的发展&#xff0c;…

【Codeforces】427B Prison Transfer(别让罪犯跑了...)

http://codeforces.com/problemset/problem/427/B 从一串数字中选出连续的长度为c的子串&#xff0c;且子串中的每一个数都不能大于t&#xff0c;问这样的子串有多少个 TLE&#xff0c;看看n的范围就知道了&#xff0c;哎呀呀&#xff0c;有点chun #include <iostream>…

PHPUnit实践三(构建模块化的测试单元)

本系列教程所有的PHPUnit测试基于PHPUnit6.5.9版本&#xff0c;Lumen 5.5框架 目录结构 模块下的目录是符合Lumen的模块结构的如&#xff1a;Controllers、Models、Logics等是Lumen模块目录下的结构目录如果有自己的目录同级分配即可&#xff0c;如我这里的Requests 整体结构 ├…

SLAM笔记(五)光束平差法(Bundle Adjustment)

1.什么是光束平差法 前边的八点法&#xff0c;五点法等可以求出闭式解的前提是已经知道确切的点对。但实际情况中往往存在大量的噪声&#xff0c;点与点不是精确地对应甚至出现一些错误匹配。 光束平差法由Bundle Adjustment翻译得来&#xff0c;有两层意思&#xff1a; 对场…

【Code forces】63B Settlers' Training

http://codeforces.com/problemset/problem/63/B 给你一串数字&#xff0c;直到所有数字都变为k为止&#xff0c;相同的数为一组&#xff0c;在一次中&#xff0c;所有不同的数都加1 1 2 2 3 → 2 2 3 4 → 2 3 4 4 → 3 4 4 4 → 4 4 4 4 #include <ios…

[elixir! #0007] [译] 理解Elixir中的宏——part.5 重塑AST by Saša Jurić

上一章我们提出了一个基本版的deftraceable宏&#xff0c;能让我们编写可跟踪的函数。宏的最终版本有一些剩余的问题&#xff0c;今天我们将解决其中的一个——参数模式匹配。 今天的练习表明我们必须仔细考虑宏可能接收到的输入。 问题 正如我上一次暗示的那样&#xff0c;当前…

vue-cli3环境变量与分环境打包

第一步 : 了解环境变量概念 我们可以根目录中的下列文件来指定环境变量: .env # 在所有的环境中被载入 .env.local # 在所有的环境中被载入&#xff0c;但会被 git 忽略 .env.[mode] # 只在指定的模式中被载入 .env.[mode].local # 只在指定…

SLAM闭合回环————视觉词典BOW小结

在目前实际的视觉SLAM中&#xff0c;闭环检测多采用DBOW2模型https://github.com/dorian3d/DBoW2&#xff0c;而bag of words 又运用了数据挖掘的K-means聚类算法&#xff0c;笔者只通过bag of words 模型用在图像处理中进行形象讲解&#xff0c;并没有涉及太多对SLAM的闭环检测…

【Codeforces】53D Physical Education (有点像冒泡)

http://codeforces.com/problemset/problem/53/D 从上面所给的序列变成下面所给的序列 交换的时候只能交换相邻的两个数字 输出每一步的交换方法&#xff0c;输出的是该元素在序列中的位置&#xff08;第一个数的位置是1&#xff09; 不要求输出步数最少的那一种方法 当同…

js脚本冷知识

js中有个很恶心的写法。比如这个var adsf(function(){})();这样的写法&#xff0c;主要是原生的&#xff0c;能在dom元素加载完之后实现自动加载这个脚本文件到里面去。可以验证这个&#xff08;function(){.......&#xff09;&#xff08;&#xff09;;在.......里面可以直接…

Python中is同一性运算符和==相等运算符区别

2019独角兽企业重金招聘Python工程师标准>>> 在区分is和这两种运算符区别之前&#xff0c;需要知道Python中对象包含的三个基本要素&#xff0c;分别是&#xff1a;id(身份标识)、type(数据类型)和value(值)。 比较对象的value(值) 是python标准操作符中的比较操作符…