加密解密RSA AES。(一)

2021-09-10 03:32:44 字數 2944 閱讀 7641

資料加密技術的介紹及實踐過程。

1.背景

1.1 資料加密

指利用密碼技術資訊進行加密,實現資訊隱蔽,從而達到保證資訊保安的目的。按照作用的不同,資料加密的技術分為資料傳輸加密技術,資料儲存加密技術,資料完整性鑑別技術和金鑰管理技術。

1.1.1資料傳輸加密技術:

有線路加密和端對端加密兩種。

端對端加密指資訊由傳送端自動加密,並且由tcp/ip進行資料報封裝,然後作為不可閱讀和不可識別的資料穿過網際網路,當這些資訊到達目的地,將被自動重組、解密,而成為可讀的資料。

1.1.2資料儲存加密技術:

有密文儲存和訪問控制兩種。前者一般是通過加密演算法轉換、附加密碼、加密模組等方法實現;後者則是對使用者資格、許可權加以審查和限制,防止非法使用者訪問資料或合法使用者越權訪問資料。

1.1. 3資料完整性鑑別技術

目的是對介入資訊傳送、訪問和處理的人的身份和相關資料內容進行驗證,一般包括口令、金鑰、身份、資料等項的鑑別。系統通過對比驗證物件輸入的特徵值是否符合預先設定的引數,實現對資料的安全保護。

2.演算法基本介紹

2.1 加密演算法

2.1.1 對稱加密

兩個使用者之間進行資訊交流,約定好使用相同的某個金鑰。一方將傳輸的報文用私鑰加密,得到密文。另一方接收到密文,用金鑰解密,得到明文。這個演算法中最重要的就是兩人之間的金鑰要保密好。同時,由於每兩個使用者之間就需要乙個約定的金鑰,因而n個使用者之間,就需要n*(n-1)個金鑰,這對企業的金鑰管理是個難題。

2.1.2 非對稱加密

需要一對金鑰,分別是公鑰和私鑰。如果用公鑰加密明文,需要用對應的私鑰才能解密明文。如果用私鑰對明文加密,則需要用對應的公鑰進行解密。當然,因為公鑰和私鑰是有不同的要求標準的,私鑰是比公鑰要遠遠符合密碼學安全標準的。所以私鑰應當保密並用來解密檔案,而公鑰可以公布並加密,不應當將二者互換使用。

甲方生成一對金鑰,將公鑰通知乙方,乙方利用公鑰加密報文,然後發給甲方,甲方接收到密文然後再用私鑰解密,得到報文。

因為加密和解密用的是不同的金鑰,所以被叫做非對稱加密演算法。

3.使用場景

3.1 對稱加密演算法的使用場景。

3.1.1 當客戶端與伺服器端之間傳遞資料時,可以使用對稱加密演算法aes。比對在客戶端對使用者輸入的敏感資訊加密傳輸到伺服器端,或者在伺服器端加密token傳遞到客戶端。

3.2 非對稱加密演算法的使用場景。

3.2.1 rsa公鑰加密體制

包含如下3個演算法:keygen(金鑰生成演算法),encrypt(加密演算法)以及decrypt(解密演算法)。

rsa公鑰加密演算法邏輯如下:

① (pk,sk)ßkeygen(λ) 金鑰生成演算法以安全常數λ作為輸入,輸出乙個公鑰pk,和乙個私鑰sk。安全常數用於確定這個加密演算法的安全性有多高,一般以加密演算法使用的質數p的大小有關。 λ越大,質數p一般越大,保證金鑰有更高的安全性。

在rsa中,金鑰生成演算法如下:演算法首先隨機產生兩個不同大質數p和q,計算n=pq。隨後,計算尤拉函式n0= (p-1)(q-1)。接下來,演算法隨機選擇乙個小於n0的整數e,並計算e關於的模反元素d。最後,公鑰為pk=(n, e),私鑰為sk=(n,

d)。② (ct) ßencrypt(pk,m) 加密演算法以公鑰pk和待加密的訊息m作為輸入,輸出密文ct。

③ mßdecrypt(sk,ct)

解密演算法以私鑰sk和密文ct作為輸入,輸出訊息m。

3.2.2 rsa簽名演算法

結合非對稱加密演算法和數字摘要演算法。還包含如下3個演算法:keygen(金鑰生成演算法),sign(簽名演算法),verify(驗證演算法)。

(補充:數字摘要演算法,例如md5,用雜湊演算法對報文進行摘要,得到固定長度(128位)的密文,這一串密文亦被稱作數字指紋。因為不同的報文得到的摘要,結果不同,而相同的報文得到的摘要必定相同。因而常用於簽名驗證。)

rsa簽名演算法邏輯如下:

① (pk,sk)ßkeygen(λ)金鑰生成演算法同樣以安全常數λ作為輸入,輸出乙個公鑰pk和乙個私鑰sk。

② óßsign(sk,m)簽名演算法以私鑰sk和待簽名的訊息m作為輸入引數,輸出簽名ó。在rsa簽名中,簽名演算法直接輸出簽名為ó。

③ bßverify(pk,

ó,m)驗證演算法以公鑰pk,簽名ó以及訊息m作為輸入,輸出乙個位元值b。b=1意味著驗證通過。b=0意味著驗證不通過。在rsa簽名中,驗證演算法首先計算,隨後對比m』與m,如果相等,則輸出b=1,否則輸出b=0。

在簽名演算法中,私鑰用於對資料進行簽名,公鑰用於對簽名進行驗證。這也可以直觀地進行理解:對乙個檔案簽名,當然要用私鑰,因為我們希望只有自己才能完成簽字。驗證過程當然希望所有人都能夠執行,大家看到簽名都能通過驗證證明確實是我自己籤的。

4.demo

客戶端加密過程主要分為以下三個步驟:1.客戶端隨機產生aes的金鑰;2.對身份證資訊(重要資訊)進行aes加密;3.通過使用rsa對aes金鑰進行公鑰加密。

這樣在傳輸的過程中,即時加密後的aes金鑰被別人擷取,對其也無濟於事,因為他並不知道rsa的私鑰,無法解密得到原本的aes金鑰,就無法解密用aes加密後的重要資訊。

我們這裡模擬客戶端和服務端,對演算法邏輯進行驗證。

package rsaaes;

import sun.security.krb5.internal.crypto.aes128;

public class testencrypt

}

執行結果如下:

服務端使用rsa0+ aes對重要資訊進行解密

服務端解密過程主要分為以下兩個步驟:1.對加密後的aes金鑰進行rsa私鑰解密,拿到金鑰原文;2.對加密後的重要資訊進行aes解密,拿到原始內容。

package rsaaes;

public class demo

}

C 實現RSA AES加密解密

c system.security.cryptography 提供了base64和xmlstring兩種方式,我更喜歡base64的 rsa是非對稱加密,經典的對稱加密就是des,aes等,不過這兩種演算法的缺點是加解密雙方都必須知道金鑰,安全性不高 rsa則可以解決這個問題,生成公鑰和私鑰,公鑰可...

資料傳輸加密 RSA AES

首先 我們先了解一下什麼是rsa和aes 1 什麼是rsa?2 什麼是aes?通過上面,我們了解到。aes是目前主流的對稱加密演算法,而rsa是非對稱加密演算法。什麼是對稱演算法aes?對稱演算法 請求發起方與接收方擁有相同的金鑰。發起流程 1 請求方用金鑰加密密文,傳送給接收方。2 接收方用金鑰對...

des vue 加密解密 DES加密 解密

外掛程式描述 des data encryption standard 是發明最早的最廣泛使用的分組對稱加密演算法。des演算法簡介 des data encryption standard 是發明最早的最廣泛使用的分組對稱加密演算法。des演算法的入口引數有三個 key data mode。其中k...