java-信息安全(十八)java加密解密,簽名等總結

1、基本概念

加密:html

  密碼經常使用術語: 明文,密文,加密,加密算法,加密祕鑰,解密,解密算法,解密祕鑰,
  密碼分析:分析密文從而推斷出明文或祕鑰的過程
  主動攻擊:入侵密碼系統,採用僞造,修改,刪除等手段向系統注入假消息進行欺騙。(對密文有破壞做用)
  被動攻擊:對一個保密系統採起截獲密文並對其進行分析和攻擊。(對密文沒有破壞做用)
  密碼體制:由明文/密文/密鑰空間,加密算法和解密算法五部分構成
  密碼協議:也稱安全協議,以密碼學爲基礎的消息交換通訊協議
  密碼系統:指用於加密、解密的系統。
  柯克霍夫原則:密碼的安全基於密鑰而不是算法的保密。現代密碼學設計的基本原則java

密碼分類:git

  古典密碼:以字符塊爲基本加密單元;現代密碼:以信息塊爲基本加密單元
  受限算法:保密性基於算法,應用軍事,屬於古典密碼;基於密鑰算法:算法公開,密鑰保密。屬於如今密碼。
  對稱密碼:加解密密鑰相同;非對稱密碼:密鑰分爲公鑰私鑰。
  分組密碼:明文分組,對每塊加密;流密碼:也稱序列密碼,每次加密一位或一個字節。
  散列函數:用來驗證數據的完整性,長度不限,哈希值容易算,運算過程不可逆。如,md5,sha,mac
  數字簽名:針對以數字的形式存儲的消息進行的處理。github

OSI安全體系:算法

  osi:應表會傳網數物
  安全機制:認證,數字簽名,訪問控制,路由控制,加密機制,業務流填充,數據完整性,公證
  安全服務:認證(來源鑑別),訪問控制,數據保密性服務,數據完整性服務,抗否定性服務
  tcp/ip:應傳網網,每一層都有相應的安全體系結構安全

數字簽名:帶有密鑰(公鑰、私鑰,私鑰簽名,公鑰驗證)的消息摘要算法
  OSI參考模型,驗證數據完整性、認證數據來源、抗否定架構

2、java的安全組成

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編碼/解碼

3、常見算法

  BASE64,base5八、MD5,SHA,HMAC,RIPEMD:http://www.cnblogs.com/bjlhx/p/6544311.html

4、對稱加密

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加密流程:

  發送方—>構建密鑰-》公佈密鑰給接收方-》構建鹽—>使用口令,鹽對數據加密-》發送鹽、加密數據給接收方。
  接收方—》使用密鑰、口令,鹽解密數據

5、非對稱加密

  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加密流程:

  私鑰加密,公鑰解密

    發送方—>私鑰鑰解密加密消息—》發送加密消息給接收方
    接收方—》使用公鑰解密消息

  公鑰加密,私鑰解密

    發送方—>公鑰鑰解密加密消息—》發送加密消息給接收方
    接收方—》使用私鑰解密消息

6、數字簽名

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簽名流程:

    發送方—>構建密鑰對-》公佈密鑰給接收方—>使用私鑰對數據簽名-》發送簽名、數據給接收方。
  接收方—》使用公鑰、簽名驗證數據

 

7、加密、簽名經常使用類

  密鑰生成器: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 算法使用的參數集合

代碼地址:https://github.com/bjlhx15/algorithm-sign.git

相關文章
相關標籤/搜索