——古典密码学
- 替换法
- 移位法
- 凯撒密码(凯撒加密):把26个字母进行左或者右的位移,最多只能移动25位
- 破解:频率分析法(概率论)
——近代密码学
- 恩尼格玛密码机:核心使用的是 移位法和替换法
- 破解:人工智能之父 图灵
——现代密码学
- 散列函数(哈希函数)
- MD5,SHA-1,SHA-256
- 对称加密:使用相同的加密密钥和解密密钥
- 流加密:一个一个一次加密
- 块加密 :分组分块加密
- 特点:
- 加密速度快
- 密文不可逆,密钥不能泄露
- ASCII 找不到对应字符,会出现乱码
- 通常结合 base64 一起使用
- 加密算法:
- DES
- AES
- 非对称加密:公钥加密则由私钥解密,私钥加密由公钥解密
- RSA
- ECC
- Base64
- 不是加密算法,是可读性算法
- 由 64 个 字符组成,大写 A-Z(26),小写 a-z(26),数字 0-9(10),符号 + 和 /(2)
- 原理:3 个字节为一组,一个字节是 8 位,一共 24 位;base64把 3 个字节转换成 4 组,每组 6 位,一个字节是 8 位,缺少 2 位,在高位进行补 0 ,这样 base64 可控制在 0-63 之间
- 当字节不够的时候,需要使用“=”进行补齐
- Base58
- 在 Base64 的组成基础上,无 0 ,o,I,i,+,/(不方便区分)
- 基本用在比特币上
- toString() 和 new String的区别
- toString() 调用的是 object 的 toString() 方法,返回的是哈希值;一般在做对象打印 或 想获取地址时使用
- new String 是根据参数,使用 java 虚拟机默认编码格式,将参数进行 decode ,然后在 ASCII 编码中找到对应的字符;一般在进行转码时使用
消息摘要(数字摘要)
- 是一个唯一对应一个消息或文本的固定长度的值
- 不可篡改,为了保证文件或值的安全
- 无论输入的消息多长,计算出来的消息摘要的长度总是固定
- 常见算法:
- MD5
- SHA1
- SHA256
- SHA512