API
ASCII编码(American Standard Code for Information Interchange)
美国信息交换标准代码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。
Byte和Bit
Byte:字节,数据存储单位。
bit:比特,又名位。一个位要么0,要么1,数据传输的单位。
1Byte=8bit
对称加密算法
Base64解决乱码问题
凯撒算法
凯撒算法是一种根据字母与字母之间的替换来破解凯撒密码的算法。
底层机制
把字母移动一定的位数来实现加密和解密
DES(Data Encryption Standard)数据加密标准
特点
可以自己指定密钥,可逆,有密钥即可破解
底层机制
操作二进制
用法三部曲
1.创建cipher对象
2.初始化cipher
3.加密/解密
密钥长度
算法/工作模式/填充模式(位) DES/CBC/NoPadding (56)
8个字节,8*8=64位,DES前7个字节参与加密计算,最后1个字节作为校验码
AES(Advanced Encryption Standard)高级加密标准
特点
可以自己指定密钥,可逆,有密钥即可破解
底层机制
操作二进制
用法三部曲
1.创建cipher对象
2.初始化cipher
3.加密/解密
密钥长度
算法/工作模式/填充模式(位) AES/CBC/NoPadding (128)
16个字节,16*8=128位
算法/工作模式/填充模式
工作模式
| 名称 | 英文 | 全名 | 方法 | 优点 | 缺点 |
|---|---|---|---|---|---|
| ECB | ElectronicCodeBook | 电子密码本 | 每块独立加密 | 1.分块处理并行处理 | 同样的原文得到相同的密文,容易被攻击 |
| CBC | CipherBlockChaining | 密码分组链接 | 每块加密依赖于前一块的秘闻 | 1.同样的原文得到不同的密文2.原文为小改动影响后面全部密文 | 1.加密需要串行处理2.误差传递 |
PS:CBC模式需要额外参数
填充模式(Padding)
是对需要按块处理的数据,当数据长度不符合块处理需求时,按照一定方法填充满块长的一种规则。
对称加密应用实战
-
可逆的,就可以使用堆成加密
-
DES和AES 优先选择AES,因为更加高级
-
从网络得到的数据缓存到本地
非对称加密
- 常用算法:RSA
- 密钥对:公钥和私钥,必须由系统生成
- 公钥加密,私钥解密;私钥加密,公钥解密;
- 公钥互换:两个组织或者人相互交换公钥(支付宝)
- 加密速度慢
RSA
用法三部曲
1.创建cipher对象
2.初始化cipher
3.加密/解密
分段加密
每次最大加密117字节
分段解密
每次最大解密128字节
保存密钥对
通过密钥工厂将字符串转成密钥对象,需要用到Base64合法format编码
消息摘要(MessageDigest)
- 常用算法:md5、sha1、sha256
- 特点:不可逆(加密后无法破解)
应用场景:
1.对密码进行md5加密后保存到数据库里
2.软件下载站使用消息摘要计算文件指纹,防止被篡改
3.数字签名
md5
- 加密后16个字节
- 加密后转成16进制后变成32个字节
- 消息摘要后的结果是固定长度,无论你的数据由多大,即使一个G的文件,摘要结果都是固定长度
sha1
- 加密后20个字节
- 加密后转成16进制后变成40个字节
sha256
- 加密后32个字节
- 加密后转成16进制后变成64个字节
应用实战
md5:登录中用户的密码
增加破解难度
- 1.多次加密
- 2.“加盐”:拼接字符串
- 3.结合数字签名
数字签名
非对称加密+消息摘要
应用场景
- 1.校验用户身份(使用私钥签名,公钥校验,只要用公钥能校验通过,则该信息一定是私钥持有者发布的)
- 2.校验数据的完整性(用解密后的消息摘要跟原文的消息摘要进行对比)