Java实现文件的RSA和DES加密算法
根據(jù)密鑰類型不同將現(xiàn)代密碼技術(shù)分為兩類:對稱加密算法(秘密鑰匙加密)和非對稱加密算法(公開密鑰加密)
?
對稱鑰匙加密系統(tǒng)是加密和解密均采用同一把秘密鑰匙,而且通信雙方都必須獲得這把鑰匙,并保持鑰匙的秘密。
非對稱密鑰加密系統(tǒng)采用的加密鑰匙(公鑰)和解密鑰匙(私鑰)是不同的。
?
1??? 對稱加密算法
對稱加密算法用來對敏感數(shù)據(jù)等信息進行加密,常用的算法包括:
DES(Data Encryption Standard): ? ? ? ? ?數(shù)據(jù)加密標準,速度較快,適用于加密大量數(shù)據(jù)的場合。
3DES(Triple DES): ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?是基于DES,對一塊數(shù)據(jù)用三個不同的密鑰進行三次加密,強度更高。
AES(Advanced Encryption Standard): ? 高級加密標準,是下一代的加密算法標準,速度快,安全級別高;
?
2??? 對稱算法
常見的非對稱加密算法如下:
RSA: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?由 RSA 公司發(fā)明,是一個支持變長密鑰的公共密鑰算法,需要加密的文件塊的長度也是可變的;
DSA(Digital Signature Algorithm): ? ?數(shù)字簽名算法,是一種標準的 DSS(數(shù)字簽名標準);
ECC(Elliptic Curves Cryptography): ?橢圓曲線密碼編碼學。
?
3??? 加密算法的選擇
? ? ? 前面簡單介紹了各種對稱和非對稱加密算法,那我們在實際使用的過程中究竟該使用哪一種比較好呢?
我們應該根據(jù)自己的使用特點來確定:
? ? ? 由于非對稱加密算法的運行速度比對稱加密算法的速度慢很多,當我們需要加密大量的數(shù)據(jù)時,建議采用對稱加密算法,提高加解密速度。
? ? ? 對稱加密算法不能實現(xiàn)簽名,因此簽名只能非對稱算法。
? ? ? 由于對稱加密算法的密鑰管理是一個復雜的過程,密鑰的管理直接決定著他的安全性,因此當數(shù)據(jù)量很小時,我們可以考慮采用非對稱加密算法。
?
? ? ? 在實際的操作過程中,我們通常采用的方式是:采用非對稱加密算法管理對稱算法的密鑰,然后用對稱加密算法加密數(shù)據(jù),這樣我們就集成了兩類加密算法的優(yōu)點,既實現(xiàn)了加密速度快的優(yōu)點,又實現(xiàn)了安全方便管理密鑰的優(yōu)點。
? ? ? 如果在選定了加密算法后,那采用多少位的密鑰呢?一般來說,密鑰越長,運行的速度就越慢,應該根據(jù)的我們實際需要的安全級別來選擇。
? ? ? 一般來說,RSA 建議采用 1024位 的數(shù)字,ECC 建議采用 160位,AES 采用 128位 即可。
轉(zhuǎn)載于:https://www.cnblogs.com/AloneSword/p/3320155.html
總結(jié)
以上是生活随笔為你收集整理的Java实现文件的RSA和DES加密算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 13成都邀请赛 1005 Naive
- 下一篇: jq封装选项卡写法