Android 深入Http(2)加密与编码,Android开发岗还不会这些问题

然后解密的时候又用同样的算法 变成了 aSIHjfophagepoa…(更长了,数据都溢出了)

再通过密钥就变成了 RIKKA。 所以数据溢出是很正常的。

对称加密


在这里插入图片描述

这个图就很直观,很明了的表现出了对称加密。它有如下的特点:

  • 发送发通过加密算法配合密钥对原数据加密得到密文,接收方通过加密算法和相同的密钥来解密得到明文。

  • 加密算法和解密算法应该是互逆的

  • 双发从一开始就持有了相同的密钥

这么说,从一开始,发送/接收双方就已经有同样的密钥了。

加密算法的原理

发送方将明文(原始数据)和 加密密钥 一起经过特殊加密算法处理后,使其变成复杂无意义的 加密密文

发送出去。

收信方收到密文后,使用加密用过的密钥相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。

可以对二进制数据(比如图片、视频)

经典算法:

DES(密钥短被弃用了)

AES (密钥很长 很顶) 速度快,效率高

IDEA

3DES(三重DES,听起来就很慢和重 = =,但是应该更难破解了)

至于具体的算法处理网上有许多文章。

非对称加密


原理:A使用公钥加密算法 对数据加密得到密文发送给B,B使用私钥相同的加密算法 对数据加密得到明文。

那这里有一个问题了:这样看来 私钥 能解 公钥 加密的数据 ,那这样,非对称加密和对称加密不是没什么不同吗????

这个问题的答案就是 非对称加密和对称加密的本质的区分:

答案如下:

  1. A 有自己的公钥和私钥,假设叫 A公钥 和 A私钥, 它们互逆,能相互解开 对方加密的数据。

  2. B 也有自己的公钥和私钥,叫 B公钥 和 B私钥,同样也是互逆 , B公钥能解开B私钥加密后的数据,反过来也是

  3. 对称加密中 公钥和私钥虽然互逆,但是A B两端也只用 这一对 唯一的密钥。

  4. 非对称加密中,A B都有了属于自己的 一对公钥密钥

  5. A使用了B(对方)的公钥对数据进行了加密, 这也是为什么 B能够使用自己的私钥对密文进行解密

这就是非对称加密的本质。

那么实际情况时,A是怎么知道B的公钥呢?

答案是:在双方沟通开始前,双方各自就给对方发公钥,然后就能得到对方的公钥了。

就是嗨客拿到了密文 还有 公钥,他也不能解出来,因为密文是要用私钥去解的。

所以公钥为什么叫公钥,就是人人都可以获取的。

公钥也可以解开由私钥加密的密文。但是他们不能对换的。

非对称加密用途:数字签名


数字签名就是利用 公钥也能解私钥的特点 来做的

数字签名的原理是:

**拿自己的私钥去对原数据进行加密,别人如果能通过我的公钥对数据还原,这就说明这份数据的确是我自己造的。这就是签名。

别人因为没有自己的私钥,所以伪造不出同样的签名数据。**

有了数字签名与验证,那么在平时的加密过程中:A可以向B发送一个原数据+一个数字签名,B收到之后会看到了原数据。那么他会验证是不是A写的,如果他拿A的公钥去解开了数字签名,那么就说明的确是A这个端发的 原数据,而不是别人 伪造了一份原数据。

↑ 这个做法在后面的HTTPS的TLS机制中有用到,通过验证数字签名,来判断对方是不是 我想要去信任的一端。

当然了,上面的例子中也可以把原数据加密一下,那这样带的就是 密文+签名数据了。

数字签名可以使非对称加密更加安全


前面说过,嗨客是可以在AB数据传输中的路上 获取密文的,如果他截取了密文,然后又拿到了B的公钥,那么,他可以伪造一份原数据:“你给我转100到xxx账户”,然后拿B的公钥去加密,给B,B收到后因为可以用自己的私钥给解开,所以他会觉得这份数据就是A发的,然后他就转钱了。

这绝对是很不安全的。

通过数字签名的学习我们可以做到下面几步来让数据传输更加安全:

  1. A 使用B公钥对原数据加密得到密文, 用A私钥对自己信息加密得到签名。

  2. A发送 密文+签名 给B。

  3. B通过 B的私钥来解密文, 再用A的公钥来解签名

  4. 验证都Ok,好,保证这份数据是A传给B的。因为嗨客没有A的私钥,所以嗨客不能构造A的签名。

经典算法:

RSA:用来签名、原文加密 都行。

DSA:专门设计用来签名。(签名更加快)

Base64


原理:将二进制数据(非文本数据)转换成由64个字符组成的字符串的编码算法。

64个字符是0-9 a-z A-Z + / 有个专门的码表(映射表)

比如

比如 M的ASCII是77,对应的二进制是 01001101。

然后自己规定,每6位截取一下,那么就能 切成 010011 + 01,其中 前半部分换成10进制是19,在码表中对应T,后半部分01换成十进制是1,在码表中对应B。

那么M被Base64转换之后就变成了 TB。

其中最多只能规定6位截取一下,因为码表只有64个字符,如果超出6位,那么多出来的码表就没有了。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

最后

光有这些思路和搞懂单个知识的应用是还远远不够的,在Android开源框架设计思想中的知识点还是比较多的,想要搞懂还得学会整理和规划:我们常见的**Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架,**这些都是属于Android开源框架设计思想的。如下图所示:

image

这位阿里P8大佬针对以上知识点,熬夜整理出了一本长达1042页的完整版如何解读开源框架设计思想PDF文档,内容详细,把Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架这些知识点从源码分析到实战应用都讲的简单明了。

由于文档内容过多,篇幅受限,只能截图展示部分,更为了不影响阅读,这份文档已经打包在GitHub,有需要的朋友可以直接点此处前往免费下载

image

image

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

tps://bbs.csdn.net/topics/618156601),有需要的朋友可以直接点此处前往免费下载。**

[外链图片转存中…(img-XC7jOxoS-1711298953823)]

[外链图片转存中…(img-0pVRPOMQ-1711298953823)]

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值