本文适合大概了解常见加密算法,以备逆向时快速确定加密方式。基本 Android 逆向时常见的就是 RSA 和 AES CBC,想要解密出明文,除了密钥外,还需要知道 padding 模式,等
首先介绍下 padding
Padding
在书面语中,明文经常以可预测的方式开始和结束。例如:尊敬的、此敬等等。为了防止已知明文攻击,随机长度的填充来防止攻击者知道明文的长度。
分为以下几种:PKCS5(openssl 分组密码默认),PKCS7,NOPADDING,Zero padding,ISO 10126 , ANSI X.923
常见词:
- S 盒——(Substitution-box)是对称密钥算法执行置换计算的基本结构,S 盒的功能就是一种简单的“代替”操作
- PKCS——(Public Key Cryptography Standards)
非对称
RSA
- 密钥长度目前有 1024、2048、3072、4096bits,密文长度和密钥长度相等
- 实际可加密的明文长度最大也是 1024bits,而且只要用到 padding,就要占用实际的明文长度。PKCS#1 建议的 padding 就占用了 11 个字节,所以实际明文 117 字节
ECC
椭圆曲线密码(Elliptic Curves Cryptography)
对称
分组密码
DES
数据加密标准(Data Encryption Standard)
- 密钥 56 位
- 数据 64 位
AES
高级加密标准(Advanced Encryption Standard),数据量大可以选择。有 AES128,192,256
- 密钥的长度可以使用 128 位、192 位或 256 位。密钥的长度不同,推荐加密轮数也不同
- 加密的数据块,IV 都和密钥长度相同
- 如果数据块,IV 及密钥长度不足时会补齐
AES 模式
CBC
Cipher-block Chaining,该模式使用了 IV 更安全常用
- IV(Initialization Vector),解密该模式不仅需要密钥 key,还需要 IV 值
Refer
PREVIOUS常见字符编码方式及Base64,url