千家信息网

Android中网络请求加密的原理是什么

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍了Android中网络请求加密的原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android中网络请求加密的原理是什么文章都会有所收获,下面我们
千家信息网最后更新 2025年11月09日Android中网络请求加密的原理是什么

这篇文章主要介绍了Android中网络请求加密的原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android中网络请求加密的原理是什么文章都会有所收获,下面我们一起来看看吧。

非对称加密

加密我了解的不多,只知道有这么两种算法:对称加密和非对称加密。

  • 对称加密:加密和解密的密钥一样,比如用123加密就是用123解密,但是实际中密码都是普通数据在互联网传输的,这样一点密码被中间人截取并破解,加密直接被攻破。

  • 非对称加密:把密钥分为公钥和私钥,公钥是公开的所有人都可以认领,私钥是保密的只有一个人知道。假设A要发送一封Email给B,他不想让任何其他人在传输中看到Email的内容,做法就是使用B的公钥对Email加密,只有B的私钥能够解密(B的私钥唯一性保证信件不会泄露)。

某天出意外了,有黑客冒充A给B发送Email,并且也用B的公钥加密,导致B无法区分这封邮件是否来自A。怎么办?此时A可以用自己的私钥加密,那么B收到邮件后如果用A的公钥可以解密邮件,那么证明这封信肯定来自于A。

OK,通过这个例子我想你们基本明白非对称加密了!我总结了下面几点:

  • 公钥的作用:对内容本身加密,保证不被其他人看到。

  • 私钥的作用:证明内容的来源

  • 公钥和私钥是配对关系,公钥加密就用私钥解密,反之亦然,用错的密钥来尝试解密会报错。

数字签名

接着聊上面发邮件的例子,假设A用自己的私钥对Email加密发送,这存在下面问题:

对文件本身加密可能是个耗时过程,比如这封Email足够大,那么私钥加密整个文件以及拿到文件后的解密无疑是巨大的开销。

数字签名可以解决这个问题:

1.A先对这封Email执行哈希运算得到hash值简称"摘要",取名h2

2.然后用自己私钥对摘要加密,生成的东西叫"数字签名"

3.把数字签名加在Email正文后面,一起发送给B(当然,为了防止邮件被窃听你可以用继续公钥加密,这个不属于数字签名范畴)

4.B收到邮件后用A的公钥对数字签名解密,成功则代表Email确实来自A,失败说明有人冒充

5.B对邮件正文执行哈希运算得到hash值,取名h3

6.B 会对比第4步数字签名的hash值h2和自己运算得到的h3,一致则说明邮件未被篡改。


看完这个过程,是不是觉得数字签名不过如此。其实就是利用算法(不一定是非对称算法)对原文hash值加密,然后附着到原文的一段数据。数字签名的作用就是验证数据来源以及数据完整性!解密过程则称为数字签名验证。

不过先别着急,我在梳理数字签名流程时候有下面几点疑惑,不知你也是否一样?

1.如果中间人同时篡改了Email正文和数字签名,那B收到邮件无法察觉啊。
答案:数字签名的生成需要对方私钥,所以数字签名很难被伪造。万一私钥泄漏了呢,不好意思,你私钥都能弄丢了那这篇文章当我白写。(私钥绝对保密不参与传输)

2.公钥是公开的并且可以自行导入到电脑,如果有人比如C偷偷在B的电脑用自己公钥替换了A的公钥,然后用自己的私钥给B发送Email,这时B收到邮件其实是被C冒充的但是他无法察觉。

答案:确实存在这种情况!解决办法就是数字证书,一环套一环请接着看。

数字证书

上面第2点描述的安全漏洞根源在哪?就是A的公钥很容易被替换!那么数字证书是怎么生成的呢?以及如何配合数字签名工作呢?

1.首先A去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对A的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate):


2.A在邮件正文下方除了数字签名,另外加上这张数字证书


3.B收到Email后用CA的公钥解密这份数字证书,拿到A的公钥,然后验证数字签名,后面流程就和图1的流程一样了,不再赘述。

和数字签名一样我在梳理这个流程时有下面几点疑惑:

假设数字证书被伪造了呢?

答案:是的,传输中数字证书有可能被篡改。因此数字证书也是经过数字签名的,是不是感觉很绕貌似陷入了"鸡生蛋蛋生鸡",我保证这是最后一个蛋- - !上文说道数字签名的作用就是验证数据来源以及数据完整性!B收到邮件后可以先验证这份数字证书的可靠性,通过后再验证数字签名。

要是有1万个人要给B发邮件,难道B要保存1万份不同的CA公钥吗?

答案:不需要,CA认证中心给可以给B一份"根证书",里面存储CA公钥来验证所有CA分中心颁发的数字证书。CA中心是分叉树结构,类似于公安部->省公安厅->市级派出所,不管A从哪个CA分支机构申请的证书,B只要预存根证书就可以验证下级证书可靠性。

如何验证根证书可靠性?

答案:无法验证。根证书是自验证证书,CA机构是获得社会绝对认可和有绝对权威的第三方机构,这一点保证了根证书的绝对可靠。如果根证书都有问题那么整个加密体系毫无意义。

举个栗子

上面一直在说虚拟场景,下文举个实际例子看看数字签名+数字证书如何验证文件的来源,以及文件的完整性。比如下载文件:我们开发中一般是服务端给文件信息加上md5,客户端下载完成后校验md5来判断文件是否损坏,这个其实就是简单的校验机制,而很多正规企业比如google都会给官方软件签署数字签名和证书,而windows已经预置了很多CA根证书:


然后看下我之前从网上下载的Chrome.exe,右键属性,通过鼠标点击一步验证:


Google Inc就是google从CA中心申请的数字证书。这样看来,这个软件确实来源于google官方,并且文件完整。接下来我干点坏事,用notepad打开这个exe文件并且篡改里面的内容(修改二进制数据,09 改为33),保存:


再看下数字签名还正常吗?


文件被篡改导致数字签名无效,数字证书没有问题。

https介绍

数字签名和数字证书可以用于文件,当然也能用于html网页数据。本人没有https相关开发经验,故不做深入探讨只是简单介绍下。

http的安全缺陷:

  • 1.无法验证服务端的身份

  • 2.无法保证数据完整性

  • 3.无法保证数据传输不被窃听

而https就是专门解决这三个问题,https使用数字签名+数字证书解决了前2个问题,很多大型网站比如baidu.com都会采用https协议,网址左侧会出现绿色加锁标识:


点击可以查看证书,另外浏览器都会内置CA根证书,来对这些网站的服务器证书进行校验。

然后,再用SSL协议对传输通道加密,保证数据传输不被窃听。

关于"Android中网络请求加密的原理是什么"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"Android中网络请求加密的原理是什么"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

数字 证书 加密 数字签名 公钥 数字证书 验证 邮件 文件 数据 就是 对称 传输 保证 问题 内容 来源 答案 原理 网络 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 保行天下软件开发公司 web软件开发框架应用 中国公民网络安全教育 云南专业软件开发标准 剑网三为什么会卡住服务器 腾讯轻量级服务器连接nas 网络安全好处与坏处 ck数据库查询数量 网络安全快一步短视频 美宜佳数据库系统设计过程 网站管理与网络安全的初探 服务器里面的文件怎么打包 客户端服务器资源有限但 以下哪些关于网络安全的认知 南京估号玩网络技术有限公司 服务器异常请重新登陆怎么回事 运营商和软件开发怎么分 esl软件开发 轻量级云服务器安装docker 服务器g1 0 23什么意思 辛集市天气预报软件开发 贵州卫星同步子母钟服务器 企业网络服务器拓扑图 华为高速动态服务器 上海银行软件开发工资高吗 江西数据库通用多路锁控板软件 微信云存储和数据库 软件开发技术部门干什么 青岛地铁计算机网络技术专业 通过命令ssh连接数据库
0