java安全之加密技術

2021-07-16 02:03:16 字數 4452 閱讀 4149

主要有:對稱加密演算法,基礎加密演算法,非對稱加密演算法。

只有乙個金鑰key進行加密解密,可以逆向加解密。

古代有名的加密演算法,將加密的資料進行一定的以為,屬於對稱加密,金鑰key = 2(int 值)。

這種加密非常簡單,只需要對相應的明文移位就得到了加密後的密文,如:明文為abc,key = 2(移2位),那麼密文為cde,原理非常的簡單。

這種加密在後來明顯不能滿足時代發展的需要,通過**頻度分析法**,可以快速的破解。

速度較快,適用於加密大量資料的場合。

des金鑰至少8個數字(64個位元位),使用了前56個位元位,後8位用作校驗碼,超過8對密文沒有影響。
基於des,強度更高,但是加密效率不高。

對一塊資料用3個不同的金鑰進行3次加密
des演算法有四種工作模式:

參考這篇部落格

1.ecb:電子密碼本模式

優點:

1.有利於平行計算;

2.誤差不會被傳送;

缺點:

1.不能隱藏明文的模式;

2.可能對明文進行主動攻擊。

3.cfb:加密反饋模式

隱藏了明文模式;

4.ofb:輸出反饋模式

5.ctr模式

實現**

public

class

desutil

/**

* 加密資料

*@param data 待加密資料

*@param key 金鑰

*@return 加密後的資料

*/public

static string encrypt(string data, string key) throws exception

system.out.println();

// 執行加密操作。加密後的結果通常都會用base64編碼進行傳輸

return base64.encodebase64string(results);

}/**

* 解密資料

*@param data 待解密資料

*@param key 金鑰

*@return 解密後的資料

*/public

static string decrypt(string data, string key) throws exception

加密強度公升級,金鑰為128(只能為128)個位元。

高階加密標準,是下一代加密演算法標準, 速度快,安全級別高
**實現參考des,兩者實現差不多。

基本的單向加密演算法有以下幾種:

base64 嚴格地說,屬於編碼格式,而非加密演算法

md5(message digest algorithm 5,資訊摘要演算法)

sha(secure hash algorithm,安全雜湊演算法)

hmac(hash message authentication code,雜湊訊息鑑別碼)

base64編碼可用於在http,mime協議下快速傳輸資料, 嚴格地說,屬於編碼格式,而非加密演算法。

base64的作用:將非ascii字元的資料轉換成ascii字元的一種方法,因為某些系統中只能使用ascii字元(比如傳輸郵件只能傳輸ascii)。
實現

public

class

base64

// base64加密

public

static string encryptbase64(byte key) throws exception

}

資訊摘要演算法,用於確保資訊傳輸完整一致。廣泛用於加密和解密技術,常用於檔案校驗。不管檔案多大,經過md5後都能生成唯一的md5值(sha-1與此類似)

特點

1、任意長度的資料,md5值長度都是固定的。

2、對原資料進行任何改動,哪怕只修改1個位元組,所得到的md5值都有很大區別。

3、弱抗碰撞:已知原資料和其md5值,想找到乙個具有相同md5值的資料(即偽造資料)是非常困難的。

4、強抗碰撞:想找到兩個不同的資料,使它們具有相同的md5值,是非常困難的。

以下幾行**可以實現實現

messagedigest md = messagedigest.getinstance("md5");   

byte inputdata = inputstr.getbytes();

md.update(inputdata);

biginteger = new biginteger(md.digest());

secure hash algorith,安全雜湊演算法,是數字簽名等密碼學應用中重要的工具,被廣泛地應用於電子商務等資訊保安領域,較md5更為安全。

sha1比md5安全,是因為sha-1摘要為160位,md5摘要為128位,相差32位,因此sha1的強度更大。
**實現

public

static

byte encrypt(byte data) throws exception

存在公鑰和私鑰的概念,要完成加解密操作,需要兩個金鑰同時參與。公鑰加密的資料必須使用私鑰才可以解密,同樣,私鑰加密的資料也 只能通過公鑰進行解密。

rsa加密演算法是一種典型的非對稱加密演算法。

原理它的原理非常簡單,如下圖:

產生的問題1

從上面的傳輸過程我們可以看出,公鑰是直接傳輸給b,那麼它可能被截獲,a向b的加密資料就可能用公鑰進行解密,造成資料洩露。

建立更加安全的傳輸通道

建立更加安全的加密通道,在a,b兩端分別產生金鑰對,分別將各自的公鑰暴露給對方,如下圖:

產生的問題2

這種安全通道,相對來說已經很堅固,但是這種方式也可能存在資料傳遞被模擬的隱患,需要通過數字簽名進一步提公升安全性。

數字簽名以及數字證書

(1)資訊 + hash = 摘要    摘要 + 私鑰 = 數字簽名(給收方做對比用的,驗證收發內容是否一致)

(2)公鑰 + 相關資訊 + ca私鑰 = 數字證書(驗證傳送者是否正確,是可信任的公鑰)

a的公鑰必須是證書中心頒發的,不然就需要對a做公鑰認證(參考這篇博文):

注意:

如果a的公鑰被替換掉,b端就不能確認公鑰是否是a端的公鑰,這時b可以讓a可以去找"證書中心"(certificate authority,簡稱ca),為公鑰做認證,證書中心用自己的私鑰,對a的公鑰和一些相關資訊一起加密,生成"數字證書"(digital certificate),傳送資訊給b在簽名的同時附上數字證書就可以了。b收信後,用ca的公鑰解開數字證書,就可以拿到a真實的公鑰了,然後就能證明"數字簽名"是否真的是a籤的。

對於對稱解密演算法和非對稱加密演算法,在實際使用的過程中該使用哪一種?

1.由於非對稱加密演算法的執行速度比對稱加密演算法的速度慢很多,當我們需要加密大量的資料時,建議採用對稱加密演算法,提高加解密速度。當資料量很小時,我們可以考慮採用非對稱加密演算法(對稱加密的金鑰管理也比較複雜)。

2.對稱加密演算法不能實現簽名,因此簽名只能非對稱演算法。

實際應用中,兩者混合使用

採用非對稱加密演算法管理對稱演算法的金鑰,然後用對稱加密演算法加密資料,這樣我們就整合了兩類加密演算法的優點,既實現了加密速度快的優點,又實現了安全方便管理金鑰的優點。

網路安全,加密技術

對稱加密技術 優點,效率高,缺點,私鑰不適合在網上傳輸,金鑰維護麻煩 非對稱加密技術 公鑰加密,私鑰解密 私鑰加密,公鑰解密 公私鑰來歷,作業系統根據給出的一串隨機數,通過某個函式運算產生乙個金鑰對,公鑰和私鑰,公鑰只能加密,私鑰負責解密 以私鑰解密為例,1我把私鑰儲存好,把公鑰給別人,別人就能給我...

資訊保安加密技術 凱撒密碼

凱撒密碼技術是一種代替技術,也稱作凱撒移位,是最簡單的加密方式之一,在密碼學中,凱撒密碼 或稱愷撒加密 愷撒變換 變換加密 是一種最簡單且最廣為人知的加密技術。它是一種替換加密的技術。這個加密方法是以愷撒的名字命名的,當年愷撒曾用此方法與其將軍們進行聯絡。愷撒密碼通常被作為其他更複雜的加密方法中的乙...

加密技術與金鑰安全管理

一起來聊聊資料的加密技術 那我們應該如何考慮資料的安全儲存?讓我們一起來聊聊資料的加密技術。單向雜湊加密 單向雜湊加密就是把任意長的輸入訊息串變化成固定長的輸出串且由輸出串難以得到輸入串的一種加密演算法。常見單向雜湊函式 利用單項雜湊加密的這個特性,可以進行密碼加密儲存。php 處理密碼的幾種方式 ...