# Android 安全加密:非對稱加密詳解
###### tags: `Tag(Android 技術相關)`
## 定義
非對稱加密算法需要兩個密鑰:**公鑰(publickey)**和**私鑰(privatekey)**。公鑰與私鑰是一對,
如果用公鑰對數據進行加密,只有用對應的私鑰才能解密;
如果用私鑰對數據進行加密,那麼只有用對應的公鑰才能解密。
因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。
簡單理解為:==加密和解密是不同的鑰匙==
在互聯網後端技術中非對稱加密技術主要用於登錄、數字簽名、數字證書認證等場景。
https://case.ntu.edu.tw/blog/?p=29107


---
## 非對稱加密常用演算法
RSA、DSA、ECDSA
### RSA:
1977年被麻省理工學院的羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)三位科學家提出
RSA 是目前應用最廣泛的數字加密和簽名技術,比如國內的支付寶就是通過RSA算法來進行簽名驗證。它的安全程度取決於秘鑰的長度
可以選密鑰長度:
1024位、2048位、4096位
### DSA:
既Digital Signature Algorithm,數字簽名算法,他是由美國國家標準與技術研究所(NIST)與1991年提出。和RSA 不同的是DSA 僅能用於數字簽名,不能進行數據加密解密,其安全性和RSA相當,但其性能要比RSA快。
### ECDSA:
Elliptic Curve Digital Signature Algorithm,橢圓曲線簽名算法,是ECC(Elliptic curve cryptography,橢圓曲線密碼學)和DSA 的結合,橢圓曲線在密碼學中的使用是在1985年由Neal Koblitz和Victor Miller分別獨立提出的,相比於RSA算法,ECC 可以使用更小的秘鑰,更高的效率,提供更高的安全保障,據稱256位的ECC秘鑰的安全性等同於3072位的RSA秘鑰,和普通DSA相比,ECDSA在計算秘鑰的過程中,部分因子使用了橢圓曲線算法。