https加密get参数
① 怎么正确理解 HTTPS 的加密
HTTPS协议在通信时,首先会采用公钥加密的方式,把密钥进行公钥加密,然后传输给服务器,服务器使用私钥解密出密钥后,客户端和服务器即可建立起安全的访问通道。在接下来的通信就会采用速度更快的共享密钥加密的方式进行数据传输。这样HTTPS协议就既拥有公钥加密的安全性,同时也拥有了通用加密的高速的两个优点。
对称加密:加密和解密用同一个密钥,客户端对数据加密,服务端解密拿到数据。
非对称加密:使用公钥和私钥,公钥加密的内容只能私钥解开,私钥加密的内容所有公钥都能解开;私钥只保存在服务器端,公钥可以发送给所有客户端,可以保证客户端通过公钥加密的内容中间人无法破解。
② 以https方式请求url,会对get参数进行加密吗
SSL应该是在TCP层和HTTP层之间的,会对传输的数据进行加密,针对的是传输过程的安全。
具体的过程大概是: 客户端输入 - 加密 - 传输给服务器 - 服务解密器处理 - 加密 - 回传个客户端 - 客户端解密 - 呈现出来。
至于firebug之类的浏览器调试工具,因为他们得到的是客户端加密之前/解密之后的数据,因此是明文的。
比如你用https协议站点输入用户名密码,传输的过程中是加密的。 当然你不会输入的时候让其他人在你的浏览器用firebug查看你的输入吧。
③ HTTPS 加密了什么内容
一般来说,HTTPS 主要用途有三个:一是通过证书等信息确认网站的真实性;二是建立加密的信息通道;三是数据内容的完整性。
那么加密的信息通道又加密了哪些信息呢?
签发证书的 CA 中心会发布一种权威性的电子文档——数字证书,它可以通过加密技术(对称加密与非对称加密)对我们在网上传输的信息进行加密,比如我在 Pornhub 上输入:
账号:cbssfaw
密码:123djaosid
可是这个数据被黑客拦截盗窃了,那么加密后,黑客得到的数据可能就是这样的:
账号:…≤˙
密码:§
最后一个就是验证数据的完整性,当数据包经过无数次路由器转发后会发生数据劫持,黑客将数据劫持后进行篡改,比如植入羞羞的小广告。开启HTTPS后黑客就无法对数据进行篡改,就算真的被篡改了,我们也可以检测出问题。
对称加密与非对称加密
对称加密
对称加密是指加密与解密的使用同一个密钥的加密算法。小编初中的时候传纸条使用了同一套加密密码,所以我用的加密算法就是对称加密算法。
目前常见的加密算法有:DES、AES、IDEA等
非对称加密
非对称加密使用的是两个密钥,公钥与私钥,我们会使用公钥对网站账号密码等数据进行加密,再用私钥对数据进行解密。这个公钥会发给查看网站的所有人,而私钥是只有网站服务器自己拥有的。
目前常见非对称加密算法:RSA,DSA,DH等。
HTTPS=数据加密+网站认证+完整性验证+HTTP
通过上文,我们已经知道,HTTPS 就是在 HTTP 传输协议的基础上对网站进行认证,给予它独一无二的身份证明,再对网站数据进行加密,并对传输的数据进行完整性验证。
HTTPS 作为一种加密手段不仅加密了数据,还给了网站一张身份证。
实现HTTPS,可以淘宝:Gworg 获取HTTPS加密协议。
④ HTTPS 到底加密了些什么内容
https其实是有两部分组成:http + SSL / TLS,也就是在http上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。具体是如何进行加密,解密,验证的,且看下图。
1. 客户端发起https请求
客户端发起https请求就是指用户在浏览器里输入一个https网址,然后连接到server的443端口。
2. 服务器端的配置
采用https协议的服务器必须要有一套SSL数字证书,需要向CA组织(如WoSign沃通CA)申请。这套SSL证书其实就是一对公钥和私钥。如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。
3. 传送证书
这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,证书过期时间等等。
4. 客户端解析证书
这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值。然后用证书对该随机值进行加密。就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。
5. 传送加密信息
这部分传送的是用SSL证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。
6. 服务段解密信息
服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。
7. 传输加密后的信息
这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。
8. 客户端解密信息
客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。
⑤ iOS开发之HTTPS连接GET请求实现Body传递参数
iOS开发中的HTTP网络请求我们一般采用AFNetWorking进行,很好用很强大毋庸置疑……但是在需求面前总会有不一般的情况。
如果你千辛万苦找到了这一篇,比较着急解决这个难题,请直接看这篇 iOS开发之Socket实现HTTPS GET请求通过Body传参
真是老大不可怕,就怕老大有文化……因此,就有了我这篇文章,如果你费尽了吃奶的力气找到了这篇文章,说明你也遇到了这种不一般的情况,那么我相信这个不会令你失望的。
对于上面提出的看似合理的要求,我开始了谆谆求索。
脑子是个好东西,一般情况我是不舍得用的,没办法啊,这次我只能来用一下了……
想想以上三方网络库无非是通过封装苹果的网络库而成的,之前是NSURLConnection,现在是NSURLSession,前面那个已经或者将要退出iOS开发的舞台,坚决不用,其实这个倒是没多大关系,因为问题出在NSMutableURLRequest这个类上,只要是用基于这个类的库,我想都是无法解决上面的问题的吧……如果有人用这个解决的话,一定要告诉我!!!一定要!!一定!
为什么会这样子呢?下面是苹果官方里该类中HTTPBody属性的注释:
我英文不太好,@discussion后面那句话翻译大概是:
这个data(HTTPBody)作为请求的消息体被发送出去,例如:在一个HTTP POST请求里。
它为什么只提到了POST请求呢,并且单独拿出来说,我认为不是随便举个栗子那么简单,大概是说你要非得在GET请求里设置这个属性……那么只能说声对不起您了各位?
至此,我认定市面上只要基于NSMutableURLRequest这个类发HTTP请求的库都解决不了我这个挠人的需求……
最后在技术老总的提点及逼迫下我只能祭出大招,动用洪荒之力用socket自己封装了这个GET请求,并实现https连接,终结了这个问题。
解决方案传送门: iOS开发之Socket实现HTTPS GET请求通过Body传参
⑥ https会对GET或POST参数加密吗
HTTPS实际是SSL over HTTP, 该协议通过SSL在发送方把原始数据进行加密,在接收方解 密,因此,所传送的数据不容易被网络黑客截获和破解。本文介绍HTTPS的三种实现方法 。 方法一 静态超链接 这是目前网站中使用得较多的方法,也最简单。在要求使...