技术标签: 计算机
https是使用了SSL的http,也就是说主要是多了加密这一块。
https其实有两个功能:
1,身份验证
2,数据加密
只是说身份验证可以认为是数据加密需要的过程,但是不妨这是一个很重要的功能,具体握手过程为:
(流程都是根据网上搜索个人组织整理的,如果有不完整不完善的请留言)
客户端发起tcp三次握手,正常的传输层建立连接;
客户端发送自己的ssl版本号,支持的加密算法等信息到服务器端;
服务器端发送自己的ssl版本,支持的加密算法,证书等信息给客户端;
客户端根据证书的签发机构找到解密证书的公钥,对服务器端传送过来的证书进行解密校验,如果可以正确解析,则说明对端是可信任的,解析出来的信息还有一个重要信息是公钥;
客户端校验正常,则会产生一个秘钥,用服务器端的公钥对该秘钥进行加密,发送到服务器端,用于通知服务器端后面的交互都是使用该秘钥做对称加密;
服务器端收到了客户端发送过来的用服务器端的公钥加密的客户端产生的密钥,就用服务器端的私钥来解密,拿到客户端发送过来的密钥,保存该密钥,并且返回给客户端响应,可以使用该密钥进行加密做后续的数据交换。
客户端收到了服务器端发送过来的信息后,开始用产生的秘钥对数据加密,发送给服务器端。
服务器端收到了客户端的请求,机密,并且把响应也通过秘钥加密,发给客户端。
客户端解密响应。
总结下来就是:
握手阶段使用的是非对称加密。
请求响应阶段使用的是对称加密。
对于服务器端身份的验证是通过校验服务器端的证书来实现的,公钥是公开的,私钥只有合法的服务器才有,如果可以正常解密,那说明服务器端是在CA结构做过备案的,可信任的。
Spring Boot 整合 Swagger 3_spiingboot3.0.1 swagger3文档
二叉树的遍历主要有三种:(1)先序遍历(根左右)(2)中序遍历(左根右)(3)后序遍历(左右根)举个例子:先序遍历(根左右):A B D H E I C F J K G中序遍历(左根右) : D H B E I A J F K C G后序遍历(左右根) : H D I E B J K F G C A以后(根)序遍历为例,每次都是先遍历树的左子树,然后再遍历树的右子树,最后再遍历根节点,以此类推,直至遍历完整个树。例子1:已知二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的_如图所示的二叉树,请写出先序,中序,后序遍历的序列
实验中:learning rate调太大太小都不好,应该先生成loss函数然后观察一会儿再让他跑着实际优化:因为我们希望在离target远的时候大步走,越靠近target越慢,因此我们可以用\eta^t进一步,我们知道learning rate不是固定的,是与初始参数有关的,因此我们考虑优化learning rate的思路:最后这一页PPT 是这一课对我来说的重点了。从头说,我们首先已经能够接受梯度下降法的公式:但是,在实际应用中我们发现,作为需要调整的参数已经有够复.._learning_rate 不固定
文章目录前言一、Nginx 服务优化1. 隐藏版本号1.1 查看版本号1.2 隐藏版本号2. 修改用户与组2.1 编译时指定用户和组2.2 修改配置文件3. 配置网页缓存时间3.1 修改配置文件4. 日志切割4.1编写脚本进行日志切割4.2 测试脚本4.3 设置 crontab 任务,定期执行脚本自动进行日志分割5.设置连接超时5.1 参数配置总结前言一、Nginx 服务优化1. 隐藏版本号在生产环境中,需要隐藏 Nginx 版本号,以避免泄露 Nginx 的版本,使攻击者不能针对特定版本进
在Android InputDispatch事件派发->选择目标窗口一文中我们分析了Android 根据Wms的window信息来派发事件到window对应的应用程序,今天我们来分析下Android如何更新window信息到inputflinger。当window信息发生变化的时候Wms需要更新window的信息到inputflinger, Android使用InputMonitor.java类来完成操作,InputMonitor 更新window的函数为updateInputWindowsLw。 我们在_inputwindowhandle
【LeetCode】653. Two Sum IV - Input is a BST 解题报告标签(空格分隔): LeetCode题目地址:https://leetcode.com/problems/two-sum-iv-input-is-a-bst/description/题目描述:Given a Binary Search Tree and a target numbe
for: for(表达式1;表达式2;表达式3) { loop; } 这个执行过程是:首先执行表达式1,然后判断表达式2是否成立,如果成立, 则执行loop,然后再是执行表达式3。 顺序:表达式1 > 表达式2 > loop > 表达式3 如果判断表达式2不成立,则返回,不会执行loop。因此for循环最少循环0次。使用方法1:标准形式#include <stdio.h>#include <stdlib.h>#d_c语言中for循环语句有哪些形式
前言Spring 框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。毋庸置疑,Spring 早已成为 Java 后端开发的行业标准,无数的公司选择 Spring 作为基础的开发框架,大部分Java 后端程序员在日常工作中也会接触到 Spring。很多研发人员把 Spring 看作心目中最好的 Java 项目,没有之一。所以这是重点也是难点,工作中必须会,面试时肯定考。Spring 面试题1、不同版本的 Spring Framework 有哪些主要功能._spring面试100题
我们的知识星球马上就要开始更新设计模式了,在更新设计模式之前,我们是不是需要做一些准备呢?否则设计模式中一些遵循的原则大家会一头雾水,所以我今天来给大家说一些面向对象的七种原则,有人说是6种有人说是7种,我个人认为是7种,我就按照7种来说,今天我就介绍2种,下一篇文章将会继续介绍剩下的五种原则,这些原则也会在设计模式中出现,各位技术人,欢迎大家的踊跃参加呦。前言在面向对象的软件设计中,只有尽..._面向对象 对变更开放
1、新建表格:create table <table_name> (f1 type1,f2 type2);create table stu (name char[20],age int);2、删除表格drop table <table_name>;drop table student;3、添加数据insert into <table_name> values (value1,…);insert into stu values (“zha..._sqlite3数据库密码
培训课程官方文档:https://www.cloudera.com/documentation/enterprise/latest/topics/admin_rm.htmlcloudera 管理cloudera 分析(pig,impala,hive)cloudera 开发cloudera hbase常用组件Avro 通用的数据存储格式(行级)Flume 采集(..._cca131
static的用途 一修饰变量 1、限制变量的作用域 2、修改变量的存储域(相对于局部变量而言) 3、具有记忆功能,保存上一次的值 二修饰函数 1、在模块内静态函数只可被该模块的函数调用const的作用 1、表示为常量,不可修改 2、改变该变量的存储域 3、修饰函数参数时,防止参数被以外改变实时系统 在规定的时间内完成特定的任务,具有实时性和可靠性全局变量和局部变量的区别 1、