Android知识点整理8:加密算法

一、简介

1、起源:古代用于战争,传递信息之前加密棒。

(1)、移位法

做两根一样加密棒,缠绕加密棒可以得到正确信息

(2)、替换法

有一本密钥本,里面记录着密文中文字真正对应的内容

2、分类:对称加密和非对称加密

(1)对称加密:

加密和解密的密钥是同一个,例如DES、IDEA、RC4、RC5、RC6 和 AES ,DES密钥太短容易被破解,基本弃用,AES用的更多。

优点:算法公开、计算量小、加密速度快、加密效率高

缺点:在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。

(2)非对称加密:

加密和解密密钥不一样,是一对,公钥和私钥,例如:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)等

优点:安全,私钥破解难度较大(数学难题,数论等),利于传输,公钥可以完全公开

缺点:速度较慢,并且不像对称加密,非对称加密有可能会被利用公钥,伪装发送者,误导接收者。通常解决方案是 会配上数字签名

二、非对称加密

1、加密:

发送者持有自身 私钥 和 接收者公钥,接收者 持有自身私钥 和 发送者公钥。 发送者 用 公钥 通过 加密算法加密,生成密文,接收者用自身私钥 通过 加密算法 解密。

流程图如下

2、数字签名:

发送者持有自身 私钥 和 接收者公钥,接收者 持有自身私钥 和 发送者公钥。

(1)、简单版

发送者用发送者私钥 通过 加密算法 得到数字签名,接收者用发送者的公钥 通过加密算法 得到原文,证明是发送者发起的签名,别人无法伪造。

(2)、为了更方便验证,一般会把数字签名和 原文一起发送给接收者,接收者得到原文后和之前原文对比,看是否相同。

(3)、流程图如下

数字签名主要为了证明 来源,加密算法主要是为了 对原数据进行保护 

3、加密+数字签名:

数字签名习惯把 原文 + 数字 签名 发送给 对方, 如果为了 解决 非对称加密,被第三方伪装,所以会使用 密文+数字签名的方式, 密文 得到 原文 ,和 数字签名得到原文 ,一样,就证明了 这密文是 对方发送的。

两者结合是更加安全的

三、摘要算法(Hash算法)

Hash算法特别的地方在于它是一种单向算法,用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值,却不能通过这个hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等

例如Md5、SHA1、SHA256等

信息摘要算法,它一般是不可逆的,不可以解密。所以它只能算的上是一种单向加密算法。

但MD5是现在已经很容易被破解了

加密是什么?加密,指的是对数据进行转换以后,数据变成了另一种格式,并且除了拿到解密方法的人,没人能把数据转换回来。但Md5不可逆,是单向的,所以严格来说不算加密算法

定义:把任意数据转换成指定大小范围(通常很小)的数据

作用:摘要、数字指纹

实际用途:数据完整性验证,用于HashCode和HashMap,一般用于Map和Set的是需要重写HashCode和equals

Hash算法要尽量减少碰撞和难被解密

四、Base64

Base64也不是加密算法,它是一种数据编码方式,虽然是可逆的,但是它的编码方式是公开的,无所谓加密。

就是把二进制编码称 常用字符串,用6位二进制转成对应常用字符,有64个常用字符。为什么不用128,因为常用字符没有128个

编码后的数据比原始数据略长,为原来的4/3 。因为在RFC 2045规定,每76个字符,还需要加上一个回车换行。

Base64主要为了方便传输,让原数据具有字符串所具有的特性,如可以放URL中传输、可以保存到文本文件、可以通过普通聊天软件进行文本传输

把原本人眼可以读懂的字符串变成读不懂的字符串,降低偷窥风险

PS:Base64 加密传输图片,可以更安全和高效,真的吗?

Base64 不安全,因为是一一对应,查表就行,没有安全性,也不高效,编码后的数据比原始数据略长,为原来的4/3,所以不是更高效。

变种:Base58,去掉几个字符会丢失部分信息,主要用在比特币或虚拟货币地址,o和0太相似,去掉+ 和 反斜杠,主要为了双击复制。

Base64 是用在某些场景只能用字符串传递

五、Url Encode编码

基于Base64的改变

1、将URL中的保留字符使用百分号%进行编码

2、目的:消除歧义,避免解析错误

六、压缩和解压缩

1、压缩:把数据换一种方式存储,以减少存储空间

2、解压缩:把压缩后的数据还原成原先的形式,以便使用

 3、常用压缩算法:DEFLATE(文档归档压缩算法)、JPEG、MP3 

4、压缩属于一种编码方式

5、媒体数据的编解码

(1)、图片 的编码:把图像数据写成JPG、PNG等文件的编码格式

(2)、图片的解码:把JPG、PNG等文件中的数据解析成标准图像数据

(3)、音频、视频的编解码 

(4)、有损和无损压缩

七、序列化

1、序列化:把数据对象(内存中)转成字节序列的过程

2、反序列化:把字节序列重新转成内存中的对象

3、目的:让内存中的对象可以被存储和传输

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值