寫這個文章呢是因為以前看過一個面試題,如下
MD5算不算是加密,BASE64的安全與穩(wěn)定性還有原理,二者在什么情況下使用分析,
那么我就根據(jù)這個面試題來聊一下吧
-
什么叫加密
直接上百度吧,下面是對于加密的解釋
加密技術(shù)是最常用的安全來保密手段,利用技術(shù)手段把重要的數(shù)據(jù)變?yōu)閬y碼(加密)傳送,到達目的地后再用相同或不同的手段還原(解自密)。
加密技術(shù)包括兩個元素:算法和密鑰。百算法是將普通的信息或者可以理解的信息與一串?dāng)?shù)字(密鑰)結(jié)合,產(chǎn)生不可度理解的密文的步驟,密鑰是用來對數(shù)據(jù)進行編問碼和解密的一種算法。在安全保密中,可通過適當(dāng)?shù)蔫€加密技術(shù)和管理機制來保證網(wǎng)絡(luò)的信息通答信安全。
再來看看md5的,本質(zhì)上md5只是一種哈希算法,是不可逆的,所以md5并不能算是一種加密。
接下來說說base64,
Base64主要用于將不可打印的字符轉(zhuǎn)換成可打印字符,或者簡單的說將二進制數(shù)據(jù)編碼成ASCII字符。
一種編碼方式,有些協(xié)議傳輸非ASCII編碼的時候需要使用base64編碼后才能傳輸
可逆的,很容易解碼
優(yōu)點:可以將二進制數(shù)據(jù)轉(zhuǎn)化為可打印字符,方便傳輸數(shù)據(jù),對數(shù)據(jù)進行簡單的加密,肉眼安全。
缺點:內(nèi)容編碼后體積變大,編碼和解碼需要額外工作量(順帶說下在url編碼中可能出現(xiàn)特殊字符字符問題,如+,/ ,%等,需要注意下)。
既然說到了加密,那么接下來順便說說下面這個問題
-
對稱加密和非對稱加密
對稱加密: 加密和解密的秘鑰使用的是同一個.
非對稱加密: 與對稱加密算法不同,非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。
對稱加密算法: 密鑰較短,破譯困難,除了數(shù)據(jù)加密標準(DES),另一個對稱密鑰加密系統(tǒng)是國際數(shù)據(jù)加密算法(IDEA),它比DES的加密性好,且對計算機性能要求也沒有那么高.
優(yōu)點:
算法公開、計算量小、加密速度快、加密效率高
缺點:
在數(shù)據(jù)傳送前,發(fā)送方和接收方必須商定好秘鑰,然后使雙方都能保存好秘鑰。其次如果一方的秘鑰被泄露,那么加密信息也就不安全了。另外,每對用戶每次使用對稱加密算法時,都需要使用其他人不知道的唯一秘鑰,這會使得收、發(fā)雙方所擁有的鑰匙數(shù)量巨大,密鑰管理成為雙方的負擔(dān)。
常見的對稱加密算法有: DES、3DES、Blowfish、IDEA、RC4、RC5、RC6 和 AES
非對稱加密算法: 公開密鑰與私有密鑰是一對,如果用公開密鑰對數(shù)據(jù)進行加密,只有用對應(yīng)的私有密鑰才能解密;如果用私有密鑰對數(shù)據(jù)進行加密,那么只有用對應(yīng)的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。
非對稱加密算法實現(xiàn)機密信息交換的基本過程是:甲方生成一對密鑰并將其中的一把作為公用密鑰向其它方公開;得到該公用密鑰的乙方使用該密鑰對機密信息進行加密后再發(fā)送給甲方;甲方再用自己保存的另一把專用密鑰對加密后的信息進行解密。甲方只能用其專用密鑰解密由其公用密鑰加密后的任何信息。
優(yōu)點:
安全
缺點:
速度較慢
常見的非對稱加密算法有: RSA、ECC(移動設(shè)備用)、Diffie-Hellman、El Gamal、DSA(數(shù)字簽名用)
對稱加密與非對稱加密傳送門