Java實現檔案的RSA和DES加密演算法

2021-08-27 14:48:22 字數 1247 閱讀 3808

根據金鑰型別不同將現代密碼技術分為兩類:對稱加密演算法(秘密鑰匙加密)和非對稱加密演算法(公開金鑰加密)

對稱鑰匙加密系統是加密和解密均採用同一把秘密鑰匙,而且通訊雙方都必須獲得這把鑰匙,並保持鑰匙的秘密。

非對稱金鑰加密系統採用的加密鑰匙(公鑰)和解密鑰匙(私鑰)是不同的。

1 對稱加密演算法

對稱加密演算法用來對敏感資料等資訊進行加密,常用的演算法包括:

des(data encryption standard): 資料加密標準,速度較快,適用於加密大量資料的場合。

3des(triple des): 是基於des,對一塊資料用三個不同的金鑰進行三次加密,強度更高。

aes(advanced encryption standard): 高階加密標準,是下一代的加密演算法標準,速度快,安全級別高;

2 對稱演算法

常見的非對稱加密演算法如下:

rsa: 由 rsa 公司發明,是乙個支援變長金鑰的公共金鑰演算法,需要加密的檔案塊的長度也是可變的;

dsa(digital signature algorithm): 數字簽名演算法,是一種標準的 dss(數字簽名標準);

ecc(elliptic curves cryptography): 橢圓曲線密碼編碼學。

3 加密演算法的選擇

前面簡單介紹了各種對稱和非對稱加密演算法,那我們在實際使用的過程中究竟該使用哪一種比較好呢?

我們應該根據自己的使用特點來確定:

由於非對稱加密演算法的執行速度比對稱加密演算法的速度慢很多,當我們需要加密大量的資料時,建議採用對稱加密演算法,提高加解密速度。

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

由於對稱加密演算法的金鑰管理是乙個複雜的過程,金鑰的管理直接決定著他的安全性,因此當資料量很小時,我們可以考慮採用非對稱加密演算法。

在實際的操作過程中,我們通常採用的方式是:採用非對稱加密演算法管理對稱演算法的金鑰,然後用對稱加密演算法加密資料,這樣我們就整合了兩類加密演算法的優點,既實現了加密速度快的優點,又實現了安全方便管理金鑰的優點。

如果在選定了加密演算法後,那採用多少位的金鑰呢?一般來說,金鑰越長,執行的速度就越慢,應該根據的我們實際需要的安全級別來選擇,一般來說,rsa建議採用1024位的數字,ecc建議採用160位,aes採用128為即可。

RSA加密演算法的java實現

演算法描述 1 選擇一對不同的 足夠大的素數p,q。2 計算n pq。3 計算f n p 1 q 1 同時對p,q嚴加保密,不讓任何人知道。4 找乙個與f n 互質的數e,且1 e f n 5 計算d,使得de 1 mod f n 這個公式也可以表達為d e 1 mod f n 這裡要解釋一下,是數...

nodejs按行讀取檔案和寫入檔案的demo

一門後端語言,必不可少的就是需要跟檔案系統進行互動。nodejs雖然是js的衍生物,但是必不可少的,也需要和檔案系統進行互動。nodejs寫入檔案const fs require fs function err fs.close 如果環境中沒有fs模組,使用npm安裝即可 nodejs按行讀取檔案c...

氣泡排序和選擇排序de實現

1.氣泡排序 氣泡排序的思想就是 大數沉底,小數浮起。它的做法是 對於n個需要排序的數,每次都把未排序的數中最大的數,放到它最終所在的位置。氣泡排序需要進行n 1趟。演算法的c 語言實現如下 template void bubblesort elemtype a,int length 2.選擇排序 ...