1. 程式人生 > >各種Java加密演算法2

各種Java加密演算法2

    來源 :http://www.open-open.com/lib/view/open1397274257325.html

BASE64的加密解密是雙向的,可以求反解。 
    MD5、SHA以及HMAC是單向加密,任何資料加密後只會產生唯一的一個加密串,通常用來校驗資料在傳輸過程中是否被修改。其中HMAC演算法有一個金鑰,增強了資料傳輸過程中的安全性,強化了演算法外的不可控因素。 
    單向加密的用途主要是為了校驗資料在傳輸過程中是否被修改。

DES
DES-Data Encryption Standard,即資料加密演算法。是IBM公司於1975年研究成功並公開發表的。DES演算法的入口引數有三個:Key、Data、Mode。其中 Key為8個位元組共64位,是DES演算法的工作金鑰;Data也為8個位元組64位,是要被加密或被解密的資料;Mode為DES的工作方式,有兩種:加密 或解密。 


        DES演算法把64位的明文輸入塊變為64位的密文輸出塊,它所使用的金鑰也是64位。 

RSA
    這種演算法1978年就出現了,它是第一個既能用於資料加密也能用於數字簽名的演算法。它易於理解和操作,也很流行。演算法的名字以發明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。 
    這種加密演算法的特點主要是金鑰的變化,上文我們看到DES只有一個金鑰。相當於只有一把鑰匙,如果這把鑰匙丟了,資料也就不安全了。RSA同時有兩把鑰 匙,公鑰與私鑰。同時支援數字簽名。數字簽名的意義在於,對傳輸過來的資料進行校驗。確保資料在傳輸工程中不被修改。


流程分析: 

  1. 甲方構建金鑰對兒,將公鑰公佈給乙方,將私鑰保留。

  2. 甲方使用私鑰加密資料,然後用私鑰對加密後的資料簽名,傳送給乙方簽名以及加密後的資料;乙方使用公鑰、簽名來驗證待解密資料是否有效,如果有效使用公鑰對資料解密。

  3. 乙方使用公鑰加密資料,向甲方傳送經過加密後的資料;甲方獲得加密資料,通過私鑰解密。

 簡要總結一下,使用公鑰加密、私鑰解密,完成了乙方到甲方的一次資料傳遞,通過私鑰加密、公鑰解密,同時通過私鑰簽名、公鑰驗證簽名,完成了一次甲方到乙方的資料傳遞與驗證,兩次資料傳遞完成一整套的資料互動! 

數字信封 
        數字信封用加密技術來保證只有特定的收信人才能閱讀信的內容。 
流程: 
    資訊傳送方採用對稱金鑰來加密資訊,然後再用接收方的公鑰來加密此對稱金鑰(這部分稱為數字信封),再將它和資訊一起傳送給接收方;接收方先用相應的私鑰開啟數字信封,得到對稱金鑰,然後使用對稱金鑰再解開資訊。

    接下來我們分析DH加密演算法,一種適基於金鑰一致協議的加密演算法。 
DH 
Diffie- Hellman演算法(D-H演算法),金鑰一致協議。是由公開金鑰密碼體制的奠基人Diffie和Hellman所提出的一種思想。簡單的說就是允許兩名用 戶在公開媒體上交換資訊以生成"一致"的、可以共享的金鑰。換句話說,就是由甲方產出一對金鑰(公鑰、私鑰),乙方依照甲方公鑰產生乙方金鑰對(公鑰、私 鑰)。以此為基線,作為資料傳輸保密基礎,同時雙方使用同一種對稱加密演算法構建本地金鑰(SecretKey)對資料加密。這樣,在互通了本地金鑰 (SecretKey)演算法後,甲乙雙方公開自己的公鑰,使用對方的公鑰和剛才產生的私鑰加密資料,同時可以使用對方的公鑰和自己的私鑰對資料解密。不單 單是甲乙雙方兩方,可以擴充套件為多方共享資料通訊,這樣就完成了網路互動資料的安全通訊!該演算法源於中國的同餘定理——中國餘數定理。  

流程分析: 

1.甲方構建金鑰對兒,將公鑰公佈給乙方,將私鑰保留;雙方約定資料加密演算法;乙方通過甲方公鑰構建金鑰對兒,將公鑰公佈給甲方,將私鑰保留。 
2.甲方使用私鑰、乙方公鑰、約定資料加密演算法構建本地金鑰,然後通過本地金鑰加密資料,傳送給乙方加密後的資料;乙方使用私鑰、甲方公鑰、約定資料加密演算法構建本地金鑰,然後通過本地金鑰對資料解密。 
3.乙方使用私鑰、甲方公鑰、約定資料加密演算法構建本地金鑰,然後通過本地金鑰加密資料,傳送給甲方加密後的資料;甲方使用私鑰、乙方公鑰、約定資料加密演算法構建本地金鑰,然後通過本地金鑰對資料解密。