一、公钥和私钥
在rsa加解密算法里,一个公钥字符串和一个私钥字符串,是对应的。公钥私钥可以互相解密。用公钥加密数据后,只有用对应的私钥才能把公钥加密数据进行解密。反之,用私钥加密数据后,用对应的公钥才能把私钥加密数据进行解密。这种用公钥解密私钥加密数据也叫签名。
二、https
由于http在数据的传输过程中是明文传输,在传输过程中有信息泄露风险。
这时就可以使用https,https实现了rsa算法,在传输过程中是密文传输的,因此保证了https在数据的传输过程中是安全的。
https的流程大致如下
1.客户端向服务端请求加密数据,服务端把用服务端私钥加密后的响应数据和CA签名证书发送给客户端。
2.客户端的证书管理器开始从受信任的根证书颁发机构列表中取出公钥数据列表,对CA签名证书进行公钥解密。
如果有某条公钥数据能解密CA签名证书,则代表这是个被信任的签名证书。然后把签名证书里的服务器公钥信息用来解密响应数据,页面正常显示。
如果没有公钥数据能解密CA签名证书,则代表这是个未被信任的签名证书。由于没有公钥数据能解密CA签名证书,因此也获取不到签名证书里的服务端公钥信息,所以响应数据无法被解密,页面无法显示。
3.客户端判断签名证书里的域名信息是否是当前域名。如果是就正常显示,如果不是则会弹出警告页面。你也可以继续浏览,页面会正常显示。因为服务端公钥信息是正确的,可以对响应数据进行解密。
4.客户端主动向服务端发送用服务端公钥加密后的数据给服务端
三、客户端自定义加密
我认为客户端自定义加密是没必要的。但也不是没有任何意义。但在防止爬虫上还是有意义的。
由于https协议己经帮你用服务端公钥加密传输数据 ,传输到服务端后再用服务端私钥解密数据既可,所以说**,数据传输过程中**的安全性问题https己经帮你解决。
当然客户端自定义加密也不是没有任何意义的,客户端自定义加密可以防止直接在开发者工具就看到发送给服务端的数据,如果你想知道客户端加密实现,就必须要去看客户端的加密代码。客户端代码经过框架打包混淆后,客户端开发者都只能依靠搜索字段名字关键词才能看到混淆后的加密逻辑代码。很有可能连开发者自己都看不懂*混淆后的加密逻辑代码**
所以客户端自定义加密大大提高了爬虫的难度。想实现爬虫就必须要去看你混淆后的后的客户端代码,找到你的数据加密逻辑代码,我相信没有深仇大恨的人,会去看这个混淆后的代码的。
如果你的网站不担心别人爬虫,就没必要客户端自定义加密,而且客户端自定义加密只是加大了爬虫的难度,并不能防止爬虫。爬虫是防止不了的。因为一切都是数据通信,并不是专属数据。
简头标的就是客户端自定义加密后的数据。不去看加密逻辑代码得到加密算法和发送字段,就无法爬虫。
这是客户端不加密的,直接看到向服务器发送的字段。可以轻易的爬虫。
参考文章