Java、Android 加密、j解密 编码、压缩、Hash

对称加密:

算法:AES  (128位)/ DES (56位)....等

加密原理:

原数据--->加密算法(密钥)------>密文

解密原理:

密文---->解密算法(密钥)------>原数据

非对称加密

算法:RSA(可加密、签名)/DSA(只能签名)速度快

使用公钥对数据加密,然后用私钥对数据解密

加密原理:

原数据--->加密算法(加密密钥)------>密文

解密原理:

密文---->加密算法(解密密钥)------>原数据

 作用:如数字签名

数字签名:

原数据----->加密算法(私钥)签名---->签名数据

签名数据--->加密算法(公钥)验证----->原数据

Base64

将数据转换为64个字符组成的编码算法

范围:A-Z a-z 0-9 + / 

通过码表将数据的二进制解析并编码

码值 字符 码值 字符 码值 字符 码值 字符
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 i 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

= 等于填充 当二进制6位不足时

缺点:不安全且占用多了1 / 3

延伸: Base58 去掉大写O 数字0 , 字母I和L ,+ =

URL编码

作用:消除歧义,避免解析错误

通过保留字进行转码 比如&转为%26

压缩、解压缩

把数据换种方式存储、传输以节省空间

常见算法:DEFLATE(zip)/JPEG/MP3等

有无损压缩和有损压缩

有损压缩不可逆

序列化:

Serializable、Parcelable

把数据转为序列的过程

反序列化是将序列转为数据

方便传输和保存

Hash

把数据转为指定大小范围的数据

可以作为数字指纹,唯一码如hashCode

算法:MD5、SHA1、SHA256等

要考虑Hash碰撞

数据完整验证

 快速查找hashCode ,HashMap

        

字符集 

由整数向现实生活的文字符号

ASCII :128个字符 1字节

ISO-8859-1 对ASCII扩展

Unicode:

UTF-8

UTF-16

GBK、GB2312、GB18030

你可能感兴趣的:(java,android,开发语言)