本文適合大概了解常見加密算法,以備逆向時快速確定加密方式。基本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
