腾讯二面复盘2020.8.12

1.https是如何实现加密的
常用的加密方式:对称加密、非对称加密

(1)对称加密
加密和解密使用相同密钥的加密算法。密钥是控制加密和解密过程的指令。算法是一组规则,规定如何进行加密和解密。

密钥的形式:
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种方式称为对称加密,也成为单密钥加密。

优缺点:
优点是算法公开,算法计算量小,加密速度快,加密效率高。
缺点是密钥管理的安全性很低,加密和解密都使用同一组密钥,在密钥发送的过程中容易被第三方截取,导致第三方也可以破解密文。

具体实现:
在每次发送真实数据之前,服务器先生成一把密钥,然后先把密钥传输给客户端,之后服务器给客户端发送真实数据的时候,会用这把密钥对数据进行加密,客户端收到加密数据之后,用密钥进行解密。

(2)非对称加密
非对称加密需要有两个密钥,公钥和私钥,公钥和私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密,因为加密和解密使用的是两个不同的密钥,所以叫做非对称算法。

公钥和私钥是一对,传输双方均有自己的一对密钥,一共四个。

优缺点:
非对称密钥的算法复杂,安全性依赖与算法和密钥。非对称算法的保密性比较好,它消除了用户交换密钥的需要。
由于算法复杂,加密解密速度没有对称加密速度快。

具体实现:
客户端要向服务器发送消息,客户端和服务器产生一对用于加密和解密的公钥和私钥。
客户端的私钥保密,公钥告诉服务器,服务器的私钥保密,服务器的公钥告诉客户端。
客户端给服务器发送消息时,客户端用服务器的公钥加密信息,服务器收到消息后,用自己的私钥解密消息。

https采用的加密:
https结合对称加密和非对称加密两种方式,我们采用非对称加密的方式传输对称加密过程中的密钥,之后用对称加密的方式传输数据。

服务器用明文的方式给客户端发送自己的公钥,客户端收到公钥后,生成一把密钥(用于对称加密),然后用服务器的公钥对这把密钥进行加密,之后再把密钥传给服务器,服务器收到之后进行解密,最后服务器安全得到这把密钥,而客户端同样有这把密钥,这样就可以实现对称加密。

证书:

非对称加密的不足:中间人截取服务器发给客户端的公钥,然后用自己的公钥冒充服务器的公钥发给客户端
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
公钥被掉包,是因为客户端无法分辨传回公钥的到底是中间人,还是服务器,这也是密码学中的身份验证问题。

在HTTPS中,使用 证书 + 数字签名 来解决这个问题。HTTPS就是使用SSL/TLS协议进行加密传输,让客户端拿到服务器的公钥,然后客户端随机生成一个对称加密的秘钥,使用公钥加密,传输给服务端,后续的所有信息都通过该对称秘钥进行加密解密,完成整个HTTPS的流程。

2.stl中的map如何实现
map简介

map是STL的一个关联容器(associative container)之一,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。

一个map是一个键值对序列,
即(key ,value)对。它提供基于key的快速检索能力,在一个map中key值是唯一的。map提供双向迭代器,即有从前往后的(iterator),也有从后往前的(reverse_iterator)。
map中key值是唯一

例子:如果已存在一个键值对(编号,用户名):(1001,"jack"),而我们还想插入一个键值对(1001,"mike") 运行时会报错(不是报错,准确的说是,返回插入不成功!)。而我们又的确想这样做,即一个键对应多个值,幸运的是multimap可是实现这个功能。

map中的类型定义
关联数组(associative array)是最有用的用户定义类型之一,经常内置在语言中用于文本处理等。一个关联数组通常也称为map,有时也称字典(dictionary),保存一对值。第一个值称为key、第二个称为映射值mapped-value。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值