加密:html
密碼經常使用術語: 明文,密文,加密,加密算法,加密祕鑰,解密,解密算法,解密祕鑰,
密碼分析:分析密文從而推斷出明文或祕鑰的過程
主動攻擊:入侵密碼系統,採用僞造,修改,刪除等手段向系統注入假消息進行欺騙。(對密文有破壞做用)
被動攻擊:對一個保密系統採起截獲密文並對其進行分析和攻擊。(對密文沒有破壞做用)
密碼體制:由明文/密文/密鑰空間,加密算法和解密算法五部分構成
密碼協議:也稱安全協議,以密碼學爲基礎的消息交換通訊協議
密碼系統:指用於加密、解密的系統。
柯克霍夫原則:密碼的安全基於密鑰而不是算法的保密。現代密碼學設計的基本原則java
密碼分類:git
古典密碼:以字符塊爲基本加密單元;現代密碼:以信息塊爲基本加密單元
受限算法:保密性基於算法,應用軍事,屬於古典密碼;基於密鑰算法:算法公開,密鑰保密。屬於如今密碼。
對稱密碼:加解密密鑰相同;非對稱密碼:密鑰分爲公鑰私鑰。
分組密碼:明文分組,對每塊加密;流密碼:也稱序列密碼,每次加密一位或一個字節。
散列函數:用來驗證數據的完整性,長度不限,哈希值容易算,運算過程不可逆。如,md5,sha,mac
數字簽名:針對以數字的形式存儲的消息進行的處理。github
OSI安全體系:算法
osi:應表會傳網數物
安全機制:認證,數字簽名,訪問控制,路由控制,加密機制,業務流填充,數據完整性,公證
安全服務:認證(來源鑑別),訪問控制,數據保密性服務,數據完整性服務,抗否定性服務
tcp/ip:應傳網網,每一層都有相應的安全體系結構安全
數字簽名:帶有密鑰(公鑰、私鑰,私鑰簽名,公鑰驗證)的消息摘要算法
OSI參考模型,驗證數據完整性、認證數據來源、抗否定架構
java的安全組成:jca(加密架構),jce(加密擴展),jsse(安全套接擴展,基於ssl),jaas(鑑別與安全服務)
jdk相關包:dom
java.security:消息摘要
javax.crypto:安全消息摘要,消息認證(鑑別)碼
java.net.ssl:java套接字,經常使用類HttpsURLConnection、SSLContextssh
第三方擴展:tcp
Bouncy Castle兩種支持方案
1.在jdk中的jre\lib\security\java.security文件配置Provider
2.Security類中使用addProvider 或 insertProviderAt方法
Commons Codec
Apache
Base6四、二進制、十六進制、字符集編碼
Url編碼/解碼
BASE64,base5八、MD5,SHA,HMAC,RIPEMD:http://www.cnblogs.com/bjlhx/p/6544311.html
DES,3DES,AES,Blowfish,RC2,RC4:http://www.javashuo.com/article/p-zrwhzlba-cr.html
DES:(Data Encryption Standard)數據加密標準
3DES:密鑰加長,屢次疊加
AES:ssh協議,多用於移動,高級
PBE:基於口令加密,能夠額外加鹽
PBE:
DES、3DES、AES加密流程:
發送方—>構建密鑰對-》公佈密鑰給接收方—>使用密鑰對數據加密-》發送加密數據給接收方。
接收方—》接收密鑰和加密數據解密數據
PBE加密流程:
發送方—>構建密鑰-》公佈密鑰給接收方-》構建鹽—>使用口令,鹽對數據加密-》發送鹽、加密數據給接收方。
接收方—》使用密鑰、口令,鹽解密數據
DH:http://www.javashuo.com/article/p-pgvnuxxk-cu.html
RSA:http://www.javashuo.com/article/p-axuurwll-cm.html
ELGamel
ECC:http://www.javashuo.com/article/p-qfzpjkwc-cy.html
加密算法:
DH(Diffie-Hellman)密鑰交換算法
RSA:基於因子分解。通常私鑰加密,公鑰解密;也能夠公鑰加密,私鑰解密。
ELGamel:基於離散對數
ECC( Elliptic curve Cryptography) 橢圓曲線加密
DH加密流程:
初始化DH算法密鑰對:
發送方—>構建發送方密鑰-》公佈發送方密鑰給接收方-》使用接收者公鑰構建發送方本地密鑰
接收方—》使用發送方密鑰密鑰構建接收方密鑰-》公佈接收者公鑰給發送方—》構建接收方本地密鑰
DH算法加密消息傳遞:
發送方—>使用本地密鑰加密消息—》發送加密消息給接收方
接收方—》使用本地密鑰解密消息
RSA加密流程:
私鑰加密,公鑰解密
發送方—>私鑰鑰解密加密消息—》發送加密消息給接收方
接收方—》使用公鑰解密消息
公鑰加密,私鑰解密
發送方—>公鑰鑰解密加密消息—》發送加密消息給接收方
接收方—》使用私鑰解密消息
RSA簽名:http://www.javashuo.com/article/p-yaccnzqt-dd.html
DSA簽名:http://www.javashuo.com/article/p-cuwtfqia-dh.html
ECDSA:http://www.javashuo.com/article/p-qfzpjkwc-cy.html
DSS(Data Signature Standard)數字簽名標準
經常使用簽名算法:RSA、DSA、ECDSA
RSA:非對稱算法,基於RSA算法的消息摘要算法,如MD5算法
DSA(Data Signature Algorithm)數字簽名算法:DSA僅包含數字簽名,不包含加解密
ECDSA(elliptic curve digital signature algorithm) 橢圓曲線數字簽名算法:速度快,強度高,簽名短
RSA簽名流程:
發送方—>構建密鑰對-》公佈密鑰給接收方—>使用私鑰對數據簽名-》發送簽名、數據給接收方。
接收方—》使用公鑰、簽名驗證數據
密鑰生成器:KeyGenerator/KeyPairGenerator
密鑰:SecretKey、KeyPair
密鑰規範:DESKeySpec/SecretKeySpec/PBEKeySpec、PKCS8EncodedKeySpec/X509EncodedKeySpec
密鑰工廠:SecretKeyFactory、KeyFactory
加解密:Cipher
簽名:Signature
加密參數規範:PBEParameterSpec、DHParameterSpec
密鑰協定(或密鑰交換)協議:KeyAgreement
其餘類:Security、SecureRandom
類說明:
Security:類集中了全部的安全屬性和常見的安全方法。其主要用途之一是管理提供者
SecureRandom:提供強加密隨機數生成器
KeyGenerator:提供(對稱)密鑰生成器的功能
SecretKey:(對稱)密鑰
SecretKeyFactory:用於密鑰、密鑰規範的互轉。(如KeySpec和SecretKey)
KeyPairGenerator:用於生成公鑰和私鑰對
KeyPair:簡單的密鑰對
PublicKey/PrivateKey:公鑰/私鑰
KeyFactory:用於密鑰、密鑰規範的互轉。(如KeySpec、公鑰私鑰)
KeyAgreement:此類提供密鑰協定(或密鑰交換)協議的功能。
KeySpec:組成加密密鑰的密鑰內容的(透明)規範,是一個接口
DESKeySpec:此類指定一個 DES 密鑰
SecretKeySpec:此類以與 provider 無關的方式指定一個密鑰,繼承了KeySpec和SecretKey,能夠直接當作SecretKey使用
PBEKeySpec:可隨同基於密碼的加密法 (PBE) 使用的供用戶選擇的密碼
PKCS8EncodedKeySpec:專用密鑰的 ASN.1 編碼,PKCS#8 中定義的 PrivateKeyInfo;
X509EncodedKeySpec:進行編碼的公用密鑰的 ASN.1 編碼,X.509 標準中定義的 SubjectPublicKeyInfo
;
Cipher:此類爲加密和解密提供密碼功能
Signature:提供數字簽名算法功能
PBEParameterSpec:指定隨同以密碼爲基礎的加密法 (PBE) 使用的參數集合
DHParameterSpec:指定隨同 Diffie-Hellman 算法使用的參數集合