任何應(yīng)用的開發(fā)中安全都是重中之重四濒,在信息交互異郴豢觯活躍的現(xiàn)在,信息加密技術(shù)顯得尤為重要盗蟆。在app應(yīng)用開發(fā)中戈二,我們需要對應(yīng)用中的多項(xiàng)數(shù)據(jù)進(jìn)行加密處理,從而來保證應(yīng)用上線后的安全性喳资,給用戶一個(gè)安全保障觉吭。
本節(jié)只講原理和應(yīng)用,下面介紹常用三種加密仆邓。
一鲜滩、哈希HASH
1.MD5加密
MD5加密的特點(diǎn):
- 不可逆運(yùn)算
- 對不同的數(shù)據(jù)加密的結(jié)果是定長的32位字符(不管文件多大都一樣)
- 對相同的數(shù)據(jù)加密,得到的結(jié)果是一樣的(也就是復(fù)制)宏赘。
- 抗修改性 : 信息“指紋”绒北,對原數(shù)據(jù)進(jìn)行任何改動(dòng),哪怕只修改一個(gè)字節(jié),所得到的 MD5 值都有很大區(qū)別.
- 弱抗碰撞 : 已知原數(shù)據(jù)和其 MD5 值,想找到一個(gè)具有相同 MD5 值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的.
- 強(qiáng)抗碰撞: 想找到兩個(gè)不同數(shù)據(jù),使他們具有相同的 MD5 值,是非常困難的
MD5 應(yīng)用:
一致性驗(yàn)證:MD5將整個(gè)文件當(dāng)做一個(gè)大文本信息,通過不可逆的字符串變換算法察署,產(chǎn)生一個(gè)唯一的MD5信息摘要闷游,就像每個(gè)人都有自己獨(dú)一無二的指紋,MD5對任何文件產(chǎn)生一個(gè)獨(dú)一無二的數(shù)字指紋。
那么問題來了,你覺得這個(gè)MD5加密安全嗎脐往?其實(shí)是不安全的休吠,不信的話可以到這個(gè)網(wǎng)站試試:md5破解網(wǎng)站∫挡荆可以說嗖地一下就破解了你的MD5加密A鼋浮!梅尤!
2.加“鹽”
可以加個(gè)“鹽”試試柜思,“鹽”就是一串比較復(fù)雜的字符串。加鹽的目的是加強(qiáng)加密的復(fù)雜度巷燥,這么破解起來就更加麻煩赡盘,當(dāng)然這個(gè)“鹽”越長越復(fù)雜,加密后破解起來就越麻煩缰揪,不信加鹽后然后MD5加密陨享,再去到md5破解網(wǎng)站破解試試看,他就沒轍了6巯佟E坠谩!
哈哈艳狐,這下應(yīng)該安全了吧定硝!答案是否定的。如果這個(gè)“鹽”泄漏出去了僵驰,不還是完?duì)僮訂崤缯M瑢W(xué)會問唁毒,“鹽”怎么能泄漏出去呢蒜茴?其實(shí)是會泄漏出去的。比如蘋果端浆西、安卓端粉私、前端、后臺等等那些個(gè)技術(shù)人員不都知道嗎近零。诺核。都有可能泄漏出去。又有同學(xué)說那就放在服務(wù)器吧久信,放在服務(wù)器更加不安全窖杀,直接抓包就抓到了!H故俊入客!
加固定的“鹽”還是有太多不安全的因素,可以看出沒有百分百的安全,只能達(dá)到相對安全(破解成本 > 破解利潤)桌硫,所以一些金融的app夭咬、網(wǎng)站等加密比較高。
下面來介紹另外兩種加密方案
3.SHA加密
安全哈希算法(Secure Hash Algorithm)主要適用于數(shù)字簽名標(biāo)準(zhǔn)(Digital Signature Standard DSS)里面定義的數(shù)字簽名算法(Digital Signature Algorithm DSA)铆隘。對于長度小于2^64位的消息卓舵,SHA1會產(chǎn)生一個(gè)160位的消息摘要。當(dāng)接收到消息的時(shí)候膀钠,這個(gè)消息摘要可以用來驗(yàn)證數(shù)據(jù)的完整性掏湾。在傳輸?shù)倪^程中,數(shù)據(jù)很可能會發(fā)生變化肿嘲,那么這時(shí)候就會產(chǎn)生不同的消息摘要忘巧。當(dāng)讓除了SHA1還有SHA256以及SHA512等。
SHA1有如下特性:不可以從消息摘要中復(fù)原信息睦刃;兩個(gè)不同的消息不會產(chǎn)生同樣的消息摘要砚嘴。
4.HMAC加密
HMAC:給定一個(gè)密鑰,對明文加密涩拙,做兩次“散列”际长,得到的結(jié)果還是32為字符串。在實(shí)際開發(fā)中兴泥,密鑰是服務(wù)器生成工育,客戶端發(fā)送請求會拿到KEY。一個(gè)賬號對應(yīng)一個(gè)KEY
以注冊為例:當(dāng)用戶把賬號提交給服務(wù)器搓彻,服務(wù)器會驗(yàn)證賬號的合法性如绸,如果合法就會生成個(gè)KEY給客戶端(這個(gè)KEY只有在注冊的時(shí)候會出現(xiàn)一次,一個(gè)賬號只對應(yīng)一個(gè)KEY)旭贬;客戶端會用拿到的KEY給密碼用HMAC方式加密(32位字符串)發(fā)給服務(wù)器怔接,最終服務(wù)器會保存這個(gè)HMAC密碼。這樣就注冊成功了稀轨!以后再登錄就會服務(wù)器就會比對這個(gè)HMAC密碼是否相等決定能否登錄成功扼脐。
這樣一來好像安全了很多哎!即使黑客拿到了客戶KEY奋刽,也只能拿到一個(gè)用戶的信息瓦侮,也就是說只丟失了一個(gè)客戶的信息。然而上面的加“鹽”方式加密佣谐,如果“鹽”泄漏了肚吏,那丟失的可是所有用戶信息啊。安全性有了很大提升有木有O粱辍7E省吁断!
二、對稱加密
簡介:
對稱加密算法又稱傳統(tǒng)加密算法坞生。
加密和解密使用同一個(gè)密鑰仔役。
加密解密過程:明文->密鑰加密->密文,密文->密鑰解密->明文是己。
示例:
密鑰:X
加密算法:每個(gè)字符+X
明文:Hello
密鑰為 1時(shí)加密結(jié)果:Ifmmp
密鑰為 2時(shí)加密結(jié)果:Jgnnq
優(yōu)缺點(diǎn):
算法公開又兵,計(jì)算量小,加密速度快卒废,加密效率高
雙方使用相同的鑰匙沛厨,安全性得不到保證
注意事項(xiàng):
密鑰的保密工作非常重要
密鑰要求定期更換
經(jīng)典加密算法有三種:
1. DES(Data Encryption Standard):數(shù)據(jù)加密標(biāo)準(zhǔn)(現(xiàn)在用的比較少,因?yàn)樗募用軓?qiáng)度不夠摔认,能夠暴力破解)
2. 3DES:原理和DES幾乎是一樣的逆皮,只是使用3個(gè)密鑰,對相同的數(shù)據(jù)執(zhí)行三次加密参袱,增強(qiáng)加密強(qiáng)度电谣。(缺點(diǎn):要維護(hù)3個(gè)密鑰,大大增加了維護(hù)成本)
3. AES(Advanced Encryption Standard):高級加密標(biāo)準(zhǔn)抹蚀,目前美國國家安全局使用的剿牺,蘋果的鑰匙串訪問采用的就AES加密。是現(xiàn)在公認(rèn)的最安全的加密方式环壤,是對稱密鑰加密中最流行的算法晒来。
只要是對稱加密都有 ECB和 CBC模式,加密模式是加密過程對獨(dú)立數(shù)據(jù)塊的處理郑现。對于較長的明文進(jìn)行加密需要進(jìn)行分塊加密湃崩,在實(shí)際開發(fā)中,推薦使用CBC的接箫,ECB的要少用攒读。
三、非對稱加密RSA
簡介:
1. 對稱加密算法又稱現(xiàn)代加密算法列牺。
2. 非對稱加密是計(jì)算機(jī)通信安全的基石整陌,保證了加密數(shù)據(jù)不會被破解。
3. 非對稱加密算法需要兩個(gè)密鑰:公開密鑰(publickey) 和私有密(privatekey)
4. 公開密鑰和私有密鑰是一對
如果用公開密鑰對數(shù)據(jù)進(jìn)行加密瞎领,只有用對應(yīng)的私有密鑰才能解密。
如果用私有密鑰對數(shù)據(jù)進(jìn)行加密随夸,只有用對應(yīng)的公開密鑰才能解密九默。
特點(diǎn):
算法強(qiáng)度復(fù)雜,安全性依賴于算法與密鑰宾毒。
加密解密速度慢驼修。
與對稱加密算法的對比:
對稱加密只有一種密鑰,并且是非公開的,如果要解密就得讓對方知道密鑰乙各。
非對稱加密有兩種密鑰墨礁,其中一個(gè)是公開的。
RSA應(yīng)用場景:
由于RSA算法的加密解密速度要比對稱算法速度慢很多耳峦,在實(shí)際應(yīng)用中恩静,通常采取
數(shù)據(jù)本身的加密和解密使用對稱加密算法(AES)。
用RSA算法加密并傳輸對稱算法所需的密鑰蹲坷。