加密類型
1. 對(duì)稱加密
又稱作私鑰加密。(舉例:家里大門開門和鎖門用的是同一把鑰匙)加密和解密使用相同的密鑰斑唬。密鑰:在加密算法當(dāng)中怒允,將明文轉(zhuǎn)換為密文砰嘁,或者密文轉(zhuǎn)換為明文的時(shí)候,需要用到的參數(shù)市殷。分為公鑰和私鑰愕撰。
**常見的對(duì)稱加密算法有:AES(wifi密碼)、DES(wifie密碼)醋寝、RC5(電視遙控器)
- DES Data Encryption Standard
- AES: Advanced Encryption Standard**
特點(diǎn):在對(duì)稱加密算法中搞挣,雙方使用的密鑰相同,要求解密方事先必須知道加密密鑰音羞。其特點(diǎn)是算法公開囱桨、計(jì)算量小、加密速度快嗅绰、加密效率高舍肠,適合加密比較大的文件搀继。不足之處是,通信雙方都使用同樣的密鑰翠语,安全性得不到保證叽躯。此外,用戶每次使用該算法肌括,需要保證密鑰的唯一性点骑,使得雙方所擁有的密鑰數(shù)量很大,密鑰管理較為麻煩谍夭。同樣黑滴,只有一把密鑰,如果密鑰暴露,文件就會(huì)被暴露。
2. 非對(duì)稱加密
與對(duì)稱加密算法不同慧库,非對(duì)稱加密算法需要兩個(gè)密鑰:公開密鑰和私有密鑰跷跪。每個(gè)人擁有這兩個(gè)密鑰,公開密鑰對(duì)外公開齐板,任何人都可以獲得吵瞻;私有密鑰不公開,單獨(dú)給指定用戶的甘磨。如果用公開密鑰對(duì)數(shù)據(jù)進(jìn)行加密橡羞,只有用對(duì)應(yīng)的私有密鑰才能解密;如果用私有密鑰對(duì)數(shù)據(jù)進(jìn)行加密济舆,那么只有對(duì)應(yīng)的公開密鑰才能解密卿泽。
也就是說,如果某個(gè)用戶得到了公鑰加密后的信息滋觉,只能用該用戶的解密私鑰才能解密签夭。如果知道了其中一個(gè),并不能計(jì)算出另外一個(gè)椎侠,因此如果公開了一對(duì)密鑰中的一個(gè)第租,并不會(huì)危害到另外一個(gè)的秘密性質(zhì)。
RSA加密算法是最常用的非對(duì)稱加密算法我纪。另外慎宾,還有美國(guó)國(guó)家標(biāo)準(zhǔn)局提出的DSA。
特點(diǎn):非對(duì)稱加密算法的保密性比較好浅悉,消除了最終用戶交換密鑰的需要趟据,但加密和解密花費(fèi)時(shí)間長(zhǎng)、速度慢术健,它不適合于對(duì)文件加密而只適合于對(duì)少量數(shù)據(jù)進(jìn)行加密汹碱。
3. 單向加密
該算法在加密過程中不需要使用密鑰,輸入明文后由系統(tǒng)直接經(jīng)過加密算法處理成密文荞估,密文無法解密咳促。只有重新輸入明文色难,并經(jīng)過同樣的加密算法處理,得到相同的密文并被系統(tǒng)重新識(shí)別后等缀,才能真正解密。
特點(diǎn):該算法計(jì)算復(fù)雜娇昙,通常只在數(shù)據(jù)量有限的情形下使用尺迂,如廣泛應(yīng)用在計(jì)算機(jī)系統(tǒng)中的口令加密。近年來冒掌,單向加密的應(yīng)用領(lǐng)域正在逐漸增大噪裕。
常見的:MD5加密(RSA公司發(fā)明),SHA(Secure Hash Algorithm)(美國(guó)國(guó)家安全局設(shè)計(jì))
4. RSA加密算法
什么是RSA加密股毫?
RSA加密算法是最常用的非對(duì)稱加密算法膳音。也是目前為止最安全的非對(duì)稱加密算法。
特點(diǎn):加密速度比較慢一些,但是安全系數(shù)比較高铃诬。
秘鑰對(duì)的話需要程序生成.不能我們自己定義
加密/解密:公鑰加密-->私鑰解密
public static byte[] encryptByPublicKey(byte[] data, String publicKey)`//公鑰加密
public static byte[] decryptByPrivateKey(byte[] encryptedData, String privateKey) `//私鑰解密
加密/解密:私鑰加密-->公鑰解密
public static byte[] encryptByPrivateKey(byte[] data, String privateKey) `//私鑰加密
public static byte[] decryptByPublicKey(byte[] encryptedData, String publicKey)//公鑰解密
在實(shí)際開發(fā)中祭陷,都有相應(yīng)的工具提供RsaUtils,不需要去操心算法的內(nèi)部實(shí)現(xiàn)原理(互質(zhì)關(guān)系趣席、歐拉函數(shù)兵志、歐姆定理等)。這些都是數(shù)學(xué)家們花了幾十年搞出來的心血宣肚。
名字的來源
RSA是1977年由羅納德?李維斯特(Ron Rivest)想罕、阿迪?薩默爾(Adi Shamir)和倫納德?奧德曼(Leonard Adleman)一起提出的。RSA就是他們?nèi)诵帐祥_頭字母拼在一起組成的霉涨。
5. MD5加密算法
全稱是Message-Digest Algorithm 5按价,在90年代初由MIT的計(jì)算機(jī)科學(xué)實(shí)驗(yàn)室和RSA Data Security Inc發(fā)明,經(jīng)MD2笙瑟、MD3和MD4發(fā)展而來楼镐。
它是哪種機(jī)密類型?
根據(jù)特點(diǎn)而定
md5算法可用于對(duì)一段信息進(jìn)行不可逆的變換運(yùn)算逮走,產(chǎn)生一個(gè)32位的字符串鸠蚪。如果對(duì)輸入信息作了任何形式的改變,對(duì)改變后的信息再次進(jìn)行MD5運(yùn)算所產(chǎn)生的數(shù)字摘要师溅,與改變前的內(nèi)容所運(yùn)算出的MD5數(shù)字摘要都是不同的茅信。MD5不是加密,因?yàn)榻Y(jié)果是不能恢復(fù)出原始數(shù)據(jù)的墓臭。
MD5加密的特點(diǎn)
MD5加密既不是對(duì)稱加密算法蘸鲸,也不是非對(duì)稱加密算法,屬于單向加密算法窿锉。因?yàn)樗豢山饷茏靡。荒芡ㄟ^匹配的方式間接解密膝舅。因此安全系數(shù)最高。
開發(fā)中如何使用MD5加密窑多?
使用MD5Utils工具類
MD5加密的過程:
1. 先將指定的字符串轉(zhuǎn)換為一個(gè)16位的byte[]
2. 遍歷取出數(shù)組中的每個(gè)byte元素
3. 將取出的byte值與255(0xff)做與運(yùn)算(&)后得到一個(gè)255以內(nèi)的數(shù)值
4. 將得到的數(shù)值轉(zhuǎn)換為16進(jìn)制的字符串, 如果它只有一位, 在它的前面補(bǔ)0
5. 將生成的16個(gè)二位16進(jìn)制形式的字符串連接起來, 它就是md5加密后的32位字符串