日志(2022-3.16--https加密算法的一些内容)

        之前几次面试,有一些问题没有答得出来,或者答得糊里糊涂的,有如下:

今天学习了https加密算法,箭头函数,垃圾回收等一些内容。

加密:
对称加密: 客户端用密钥A对data加密,服务器用密钥A对data解密,服务器用密钥A加密,再传给客户端,并且客户端用密钥A进行解密。
    此时会出现问题,就是无法保证客户端和服务端之间都有一个一样的密钥,倘若客户端向服务端传输了这个密钥,但如果这个密钥在传输过程被劫持了,同样会不安全。所以这个加密方式,并不是很可靠,除非双方都有一个相同的密钥。

非对称加密:他会有一组密钥对,分别是公钥和私钥。首先服务器会发送给客户端公钥,之后客户端会用公钥对data进行加密,传递给服务器,服务器再用私钥对data解密。但这个只能保证单方向。

双非对称加密:即客户端有公钥A1,私钥A2,服务端有公钥B1,公钥B2,过程就如上述相同。但非对称加密非常耗时,这会影响效率。

非对称加密+对称加密: 服务器有公钥A1,A2,客户端随机生成一个密钥X,服务端向客户端传送公钥A1,客户端用密钥X进行加密传送给服务端,服务端用A2进行解密。此时客户端可以用密钥X加密data并输送数据,服务端用X解密,服务端也可以同样如此。

此时也会有问题,如果有个中间人将服务端传过来的公钥A1,修改成B1发送给客户端,此时中间人就可以用B2得到客户端的密钥X。
所以要保证客户端拿到的就是服务端的公钥。

互联网中有一个CA机构,颁布了一个数字证书,可以证明上述问题。数字证书会有一个数字签名和明文信息,若客户端想知道自己拿到的是否是服务端的公钥,是通过如下过程:
客户端拿到了证书,有了明文信息M1,数字签名N1。
客户端用CA机构的公钥对数字签名N1解密,得到N2;用hash算法对M1进行hash得到M2,将M2和N2进行比较即可,等于则表示是服务端发来的证书。

箭头函数: 1、 没有prototype,箭头函数本身没有this。2、箭头函数的this指向在定义的时候继承自外层第一个普通函数的this。即父级作用域的this。3、无法改变箭头函数中的this指向。4、不可以使用arguments对象。5、不可以使用yield命令,

普通函数的this指向调用它的地方。

this的绑定优先级: new>显示>隐式>默认

new是指当new一个构造函数的时候,此时的this指向新创建的对象


显示绑定:指用call,apply,bind来强硬修改this

隐式绑定:指形如xxx.a()。

        还学习了垃圾回收的一部分内容。还有挺多内容还没有深入去了解。
垃圾回收:就是指找到不要用到的内存,然后释放其内存。标记清除算法:垃圾收集器在运行的时候,会把所有变量都加上一个标记,假设内存中所有对象都是垃圾,全部标记为0,然后从根对象开始遍历,不是垃圾的节点改成1,然后清理所有标记为0的垃圾,销毁并回收所占用的内存,最后把所有内容对象都修改为0,等待下一轮回收。
优点:实现简单。缺点:清楚后剩余对象内存位置不变,空间也不连续,出现内存碎片。
标记整理算法会解决上述问题。

        明天还需要面试,在面试之前打算把之前的一些问题全部了解,希望能有个好的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值