移位式加密:可以定规则偏移几位。
替换式加密:
密钥:对照码表
加密算法:怎么替换成密文
解密算法:怎么替换成明文
对称加密

使用相同密钥,不同算法
原理:使用密钥和加密算法、使用密钥和解密算法
缺点:同一个密钥、建立加密通信前肯定要传输这个密钥,那么就容易泄漏。
经典算法:DES、AES
非对称加密

使用相同加密算法,只是密钥不同
原理:使用公钥加密、使用私钥解密,即自己持有公钥和私钥,但是公钥给对方用来加密的,私钥自己保管用来解密,即对方加密后也无法解密的,只有我自己有私钥才能解密。
(另外使用私钥加密,也是可以使用公钥解密的,即反着来也行,但是公钥是公开、私钥是保密的,正常是可以通过私钥计算出公钥的,所以不能反着来用)
经典算法:RAS、DSA
优点:可以在不安全的网络上传递你的公钥
缺点:计算太复杂、性能差点
数字签名
签名与验证:

这里对签名使用私钥加密,接收方再用公钥加密,就可以拿到签名和原始数据比较一致。别人不好伪造签名数据,因为不知道私钥,所以伪造的也就无法用公钥加密得到原始数据。这样就有了签名证明的作用。
中间人攻击: 不知道消息是否来自对方,还是中间人,此时进行签名验证,防止伪造,让你确认消息就是来自你要的那个人。
但是有个问题,上面传递了原数据,就是明文容易被偷窥,此时可以使用非对称加密这个原数据:

Base64
将二进制数据转换成由64个字符组成的字符串的编码算法(大小写字母52 + 数字10 + (+#))
原理:就是把原本一个字节中的按每6个bit编排,得到新的字符串。
用途:让原数据(比如图片)具有字符串所有的特性,可以传输、保存。
缺点:不安全、低效(因为6个bit当做一个字节了)
URL encoding
%百分号编码
将URL中的保留字符使用百分号进行编码
目的:消除歧义、避免解析误解
压缩和解压缩
压缩:减小存储空间
解压缩:还原,以便使用
序列化
把内存里对象,转换成字节序列的过程
反序列化:字节序列转成内存对象
Hash:不可逆运算得到,(不算是加密算法)
把任意数据转换成指定大小范围(通常很小)的数据
作用:摘要、数字指纹
经典算法:MD5散列算法、SHA1
实际用途:数据完整性验证、快速查找(hashCode()、hashMap)、隐私保护(密码)
为什么重写了equals方法,就要重写hashCode方法?
hashMap的key,是比较hashCode来判断唯一的。因为计算hashCode比equals快速匹配、性能好、粗略,如果hashCode相等,再比较equals。
如果equals比较相等,那hashCode一定相等,反之不一定。
彩虹表:对于常用的密码的对应hash表,容易被破解

此时可以给原始密码加盐、比如末尾固定加个33,那么算出来的hash值就不好在彩虹表中查找到。但是这个盐一般也比较复杂,这样也不会容易被破解。
对非对称加密的签名验证的完整版:先进行hash(减小数据大小)得到摘要,对hash值进行加密,得到签名后的摘要。这样全程得不到明文,不易泄漏。

字符集(一个数字和文字符号的Map)
含义:一个由整数向现实世界中的文字符号的Map,最熟悉的就是ASCII字符集

注意UTF-8和16都是Unicode字符集下面的两个不同编码规则的分支,比如数字01的不同缩写方式