我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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足够大,那么私钥加密整个文件以及拿到文件后的解密无疑是巨大的开销。

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

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

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

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

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

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

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

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

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

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

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

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

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

数字证书

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

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

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

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

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

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根证书:

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

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

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

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

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

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

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

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

https介绍

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

http的安全缺陷:

  • 无法验证服务端的身份

  • 无法保证数据完整性

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

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

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

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

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

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

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

Android中OkHttp是如何做网络请求的

小编给大家分享一下Android中OkHttp是如何做网络请求的,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!什么是OKhttp简单来说 OkHttp 就是一个客户端用来发送 HTTP 消息并对服务器的响应做出处理的应用层
2023-06-14

gitlab的合并请求是什么原理

GitLab是一个流行的版本控制管理软件,被许多开发人员用于协作和版本控制。其中一个关键的功能是合并请求(Merge Request),也称为合并申请或合并请求。本文将介绍合并请求的原理以及与GitLab集成的过程,以及如何在团队中使用它来
2023-10-22

Android中setContentView加载布局的原理是什么

Android中setContentView加载布局的原理是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Activiy setContentView源码分析/** * S
2023-05-30

Android中Lint的原理是什么

这篇文章将为大家详细讲解有关Android中Lint的原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Lint 的工作过程lint 工具的代码扫描工作流:应用源文件:源文件包含组成
2023-06-14

Android中Lifecycle的原理是什么

本文小编为大家详细介绍“Android中Lifecycle的原理是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android中Lifecycle的原理是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
2023-06-29

Android中ViewPager的原理是什么

ViewPager是Android中的一个布局容器控件,主要用于实现页面切换效果。它的原理是通过管理多个Fragment或View的显示与隐藏,实现页面的滑动切换。具体原理如下:1. ViewPager通过PagerAdapter来管理多个
2023-09-25

计算机网络通信的原理是什么

本篇内容介绍了“计算机网络通信的原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!成为"黑客"前,必须学习的"计算机网络通信原理""黑
2023-06-03

主流Docker网络的实现原理是什么

这篇文章主要介绍了主流Docker网络的实现原理是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、容器网络简介容器网络主要解决两大核心问题:一是容器的IP地址分配,二是
2023-06-04

Android中的Coroutine协程原理是什么

这篇文章主要介绍了Android中的Coroutine协程原理是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言协程是一个并发方案。也是一种思想。传统意义上的协程是单线
2023-06-29

Android中AsyncTask的工作原理是什么

这篇文章给大家分享的是有关Android中AsyncTask的工作原理是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。概述实际上,AsyncTask内部是封装了Thread和Handler。虽然AsyncTa
2023-06-15

Android中的SurfaceFlinger工作原理是什么

这篇文章将为大家详细讲解有关Android中的SurfaceFlinger工作原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。概念SurfaceFlinger是一个系统服务,如:au
2023-06-22

SpringBoot中bootstrap.properties文件加载的原理是什么

这篇文章主要介绍“SpringBoot中bootstrap.properties文件加载的原理是什么”,在日常操作中,相信很多人在SpringBoot中bootstrap.properties文件加载的原理是什么问题上存在疑惑,小编查阅了各
2023-06-22

web网络安全的反射型XSS攻击原理是什么

本篇内容介绍了“web网络安全的反射型XSS攻击原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!反射型XSS攻击页面http://1
2023-06-25

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录