加解密与编解码
编码解码 Encoding & Decoding
Base64
将二进制数据转换成由64个字符组成的字符串的编码算法(A—Za-z0-9+/)
用途:让原数据具有字符串所具有的特性,如可以放在URL中传输、可以保存到文本文件,可以通过普通聊天软件进行文本传输。
把原本可读懂的字符串变成读不懂的字符串,降低偷窥风险。
Base64编码表
示例:
字符串"Man" Base64编码
Base64编码不足的补齐方式
URL encoding
将URL中保留字符串使用百分号"%"进行编码
目的:消除歧义,避免解析错误
示例:
https://www.baidu.com/?name=你 好
上述网址中,你好中间的空格会被编码成"%20"
https://www.baidu.com/?name=你%20好
加密与解密 Encryption & Decryption
不仅可用于文本内容加解密,还可以应用于二进制流的加解密
对称加密
原理:使用密钥和加密算法对数据进行转换,得到的无意义数据即为密文;
使用密钥和解密算法对密文进行逆向转换,得到原始数据。
常见算法:DES,AES,3DES
缺点:不能在不安全⽹络上传输密钥,⼀旦密钥泄露则加密通信失败
非对称加密
原理:使用公钥对数据进行加密得到密文;使用私钥对数据进行解密得到原数据。
常见算法:RSA,DSA
其他应用:数字签名
公钥加密
私钥验签
签名验证时,一般会计算出原数据的hash,然后再签名验证
原因是绝大多数情况下原数据会比较大,直接进行签名,签名所占的时间比较长,空间也会比较大,影响性能。
优点:可以在不安全⽹络上传输密钥
缺点:数据的加解密计算复杂,计算上的时间性能比对称加密差
压缩与解压缩 Compression & Decompression
压缩:把数据换一种方式来存储,以减小存储空间
解压缩:把压缩后的数据还原成原先的形式,以便使用
常用压缩算法:DEFLATE、JPEG、MP3
序列化 Serialization
序列化:把数据对象(一般内存中的,例JVM中的对象)转换成字节序列的过程
反序列化:把字节序列重新转换成内存中的对象
作用:让内存中的对象可以被存储与传输
哈希 Hash
定义:把任意数据转换成指定大小范围(通常很小)的数据
作用:摘要,数字指纹
常见算法:MD5、SHA1、SHA256等
用途:
- 数据完整性验证;
- 快速查找hashCode()和HashMap;
- 隐私保护
字符集 Charset
定义:一个由整数向现实中的文字符号映射集
- ASCII:128个字符,1字节
- ISO-8859-1:对ASCII进行扩充,1字节
- Unicode:13万个字符,多字节
- UTF-8:Unicode编码分支
- UTF-16:Unicode编码分支
如果喜欢该文章或对你帮助,那请献上一颗Star吧
https://github.com/peace710/AJLife
自动化测试相关文章链接
1.Android Monkey压力测试
2.Android Monkey高级参数的应用
3.Android MonkeyScript命令的简单应用
4.Android MonkeyRunner的简单应用
5.Android UiAutomator2.0的应用