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