一句话简述:密钥+明文+盐=密文+盐。
加密:
- 给定密钥用作AES密钥(长度128,192,256位)
- 给定或随机生成40位长度的盐,将其用作AES加密的初相位和轮数得到轮密钥
- 将明文做变长int编码
- 将编码后的明文和2中生成的轮密钥做异或操作得到密文
- 将密文和盐拼接做base32编码
解密:加密逆操作
- 解密纯算法实现,不依赖任何资源,如数据库,nosql
- AES算法强度高,速度极快(通常有CPU硬件指令支持)
- 采用变长int编码,有效缩短密文长度
- 同一明文可对应多个密文
- 高度依赖盐的随机性。因为加密可逆,相同盐必须对应确定的轮密钥,如果已知明文,密文,可以推算出轮密钥,进而使得相同盐的密文全部泄密。