Android

【Android】编码与加密

2020-07-23  本文已影响0人  小八八八八八八

加密

密码学

起源:古代战争 - 古典密码学

移位式加密:密码棒

加密算法:缠绕木棒后书写
密钥:木棒的尺寸规格


密码棒.png

替换式加密:

加密算法:替换文字
秘钥:码表
原文:ABCDEFGHIJKLMNOPQRSTUVWXYZ
码表:BCDEFGHIJKLMNOPQRSTUVWXYZA
原文:i love you
加密:j mpwf zpv
解密:i love you

现代密码学

不止可以用于文字内容,还可以用于各种二进制数据

对称加密

原理:使用秘钥和加密算法对数据进行转换,得到的无意义数据即为密文;使用秘钥
和解密算法对密文进行逆向转换,得到原数据。
经典算法:DES(秘钥长度太短,容易被破解), AES
对称加密.png

非对称加密

原理:使用公钥对数据进行加密得到密文;使用私钥对数据进行解密得到原数据。
双方各持有自己的私钥和对方的公钥,用公钥加密发送出去的消息,用私钥解密对方发过来的消息
优点:可以在不安全网络上传播自己的公钥。
缺点:计算太复杂,性能比对称加密差
非对称加密1.png
非对称加密2.png

公钥能不能解私钥?
可以互相解的,但是因为公钥可以被计算出来,所以不可以将私钥当公钥公开(比特币,通过椭圆曲线计算)

数字签名

经典算法:RSA(既可以加密,又可以签名),DSA(只可以签名)


数字签名.png

但是不确定验证后的原数据是否是真的原数据,所以下面是增强版数字签名,将原文携带,方便校验。


增强版数字签名.png

下面是加密+签名的模型(残缺版)


加密+签名.png

下面是完整版模型


加密+签名(完整版).png

密码学秘钥和登录密码

秘钥(key):相当于钥匙,丢了以后谁也没有办法。
场景:用于加密和解密
目的:保证数据被盗时不会被人读懂内容
焦点:数据
登录密码(pasword):又被称为通行口令。
场景:用户进入网站或游戏前的身份验证
目的:数据提供方或应用服务方对账户拥有者数据的保护,保证【你是你】的时候才提供权限
焦点:身份

Base64

从A格式转换成B格式,并且能转换回来。
将二进制数据转换成由64个字符组成的字符串的编码算法
什么是二进制数据?
非文本数据,因为文本数据比较特殊,而二进制数据则是为了区分文本数据
作用:1.将二进制数据转换为字符串
           2.防偷窥(将本来能读懂的字符串变成读不懂的字符串)
转换过程.png
码表.png

Base64加密传输图片,更安全更高效吗?
并没有更安全,因为根据码表就可以解密。
并没有更高效,因为字节码变多了。

变种Base58

比特币存储地址,去除相似的字符

URL encoding

浏览器编码,将URL中的保留字符使用百分号“%”进行编码,目的是为了消除歧义,避免解析错误

压缩与解压缩

压缩:把数据换一种方式来存储,以减小存储空间
解压缩:把压缩后的数据还原成原先的形式,以便使用
常见压缩算法:DEFLATE(ZIP)、JPEG、MP3
例:
原数据:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
压缩后:
a:41;b:41;

压缩属于编码吗?

压缩后又可以解压缩回来,所以属于编码

媒体数据的编码

什么是图片、音频、视频的编解码?

图片的编码:把图像数据写成JPG、PNG等文件的编码格式。
图片的解码:把JPG、PNG等文件中的数据解析成标准的图像数据。
音视频的编解码

有损压缩不可逆,所以不属于编码

上一篇 下一篇

猜你喜欢

热点阅读