常用的加解密算法的優(yōu)缺點(diǎn)隘道、應(yīng)用場(chǎng)景總結(jié)

常用的加解密算法的優(yōu)缺點(diǎn)症歇、應(yīng)用場(chǎng)景總結(jié)

一郎笆、加解密的基礎(chǔ)知識(shí)

1、對(duì)稱密鑰加密

????對(duì)稱密鑰加密(一個(gè)密鑰)当船,也叫做共享密鑰加密或機(jī)密密鑰加密题画,使用發(fā)件人和收件人共同擁有的單個(gè)密鑰。這種密鑰既用于加密德频,也用于解密苍息,叫做機(jī)密密鑰。對(duì)稱密鑰加密是加密大量數(shù)據(jù)的一種行之有效的方法壹置。

????對(duì)稱密鑰加密有許多種算法如DES,RC4,IDEA等竞思,但所有這些算法都有一個(gè)共同的目的:以可還原的方式將明文(未加密的數(shù)據(jù))轉(zhuǎn)換為暗文。暗文使用加密密鑰編碼钞护,對(duì)于沒(méi)有解密密鑰的任何人來(lái)說(shuō)它都是沒(méi)有意義的盖喷。由于對(duì)稱密鑰加密在加密和解密時(shí)使用相同的密鑰,所以這種加密過(guò)程的安全性取決于是否有未經(jīng)授權(quán)的人獲得了對(duì)稱密鑰难咕。

????衡量對(duì)稱算法優(yōu)劣的主要尺度是其密鑰的長(zhǎng)度课梳。密鑰越長(zhǎng),在找到解密數(shù)據(jù)所需的正確密鑰之前必須測(cè)試的密鑰數(shù)量就越多余佃。需要測(cè)試的密鑰越多暮刃,破解這種算法就越困難。

2爆土、公鑰加密

????公鑰加密使用兩個(gè)密鑰:一個(gè)公鑰和一個(gè)私鑰椭懊,這兩個(gè)密鑰在數(shù)學(xué)上是相關(guān)的。為了與對(duì)稱密鑰加密相對(duì)照步势,公鑰加密有時(shí)也叫做不對(duì)稱密鑰加密氧猬。在公鑰加密中,公鑰可在通信雙方之間公開(kāi)傳遞坏瘩,或在公用儲(chǔ)備庫(kù)中發(fā)布盅抚,但相關(guān)的私鑰是保密的。只有使用私鑰才能解密用公鑰加密的數(shù)據(jù)桑腮。使用私鑰加密的數(shù)據(jù)只能用公鑰解密泉哈。下圖中,發(fā)件人擁有收件人的公鑰破讨,并用它加密了一封郵件丛晦,但只有收件人掌握解密該郵件的有關(guān)私鑰。

公鑰提陶、私鑰兩個(gè)有什么聯(lián)系呢烫沙?

????簡(jiǎn)單的說(shuō)就是,通過(guò)公鑰加密的數(shù)據(jù)隙笆,只能通過(guò)私鑰解開(kāi)锌蓄。通過(guò)私鑰加密的數(shù)據(jù)升筏,只能通過(guò)公鑰解開(kāi)。

????公鑰算法的主要局限在于瘸爽,這種加密形式的速度相對(duì)較低您访。實(shí)際上,通常僅在關(guān)鍵時(shí)刻才使用公鑰算法剪决,如在實(shí)體之間交換對(duì)稱密鑰時(shí)灵汪,或者在簽署一封郵件的散列時(shí)(散列是通過(guò)應(yīng)用一種單向數(shù)學(xué)函數(shù)獲得的一個(gè)定長(zhǎng)結(jié)果,對(duì)于數(shù)據(jù)而言柑潦,叫做散列算法)享言。將公鑰加密與其它加密形式(如對(duì)稱密鑰加密)結(jié)合使用,可以優(yōu)化性能渗鬼,如數(shù)字簽名和密鑰交換览露。

3、單向散列算法

????散列譬胎,也稱為散列值或消息摘要 差牛,是一種與基于密鑰(對(duì)稱密鑰或公鑰)的加密不同的數(shù)據(jù)轉(zhuǎn)換類型。散列就是通過(guò)把一個(gè)叫做散列算法的單向數(shù)學(xué)函數(shù)應(yīng)用于數(shù)據(jù)堰乔,將任意長(zhǎng)度的一塊數(shù)據(jù)轉(zhuǎn)換為一個(gè)定長(zhǎng)的多糠、不可逆轉(zhuǎn)的數(shù)字,其長(zhǎng)度通常在128~256位之間浩考。所產(chǎn)生的散列值的長(zhǎng)度應(yīng)足夠長(zhǎng),因此使找到兩塊具有相同散列值的數(shù)據(jù)的機(jī)會(huì)很少被盈。如發(fā)件人生成郵件的散列值并加密它析孽,然后將它與郵件本身一起發(fā)送。而收件人同時(shí)解密郵件和散列值只怎,并由接收到的郵件產(chǎn)生另外一個(gè)散列值袜瞬,然后將兩個(gè)散列值進(jìn)行比較。如果兩者相同身堡,郵件極有可能在傳輸期間沒(méi)有發(fā)生任何改變邓尤。

數(shù)字簽名:結(jié)合使用公鑰與散列算法

????數(shù)字簽名是郵件、文件或其它數(shù)字編碼信息的發(fā)件人將他們的身份與信息綁定在一起(即為信息提供簽名)的方法贴谎。對(duì)信息進(jìn)行數(shù)字簽名的過(guò)程汞扎,需要將信息與由發(fā)件人掌握的秘密信息一起轉(zhuǎn)換(使用私鑰)為叫做簽名的標(biāo)記。數(shù)字簽名用于公鑰環(huán)境(任何人都可以擁有)中擅这,它通過(guò)驗(yàn)證發(fā)件人確實(shí)是他或她所聲明的那個(gè)人澈魄,并確認(rèn)收到的郵件與發(fā)送的郵件完全相同。

????散列算法處理數(shù)據(jù)的速度比公鑰算法快得多仲翎。散列數(shù)據(jù)還縮短了要簽名的數(shù)據(jù)的長(zhǎng)度痹扇,因而加快了簽名過(guò)程铛漓。

????密鑰交換:結(jié)合使用對(duì)稱密鑰與公鑰

????對(duì)稱密鑰算法非常適合于快速并安全地加密數(shù)據(jù)。但其缺點(diǎn)是鲫构,發(fā)件人和收件人必須在交換數(shù)據(jù)之前先交換機(jī)密密鑰浓恶。結(jié)合使用加密數(shù)據(jù)的對(duì)稱密

二、常用的幾種加密方式

1结笨、MD5 加密(散列算法)

? ? ?(1)包晰、概念

?????????? MD5是一種基于哈希函數(shù)的單向加密算法,只能加密禀梳、無(wú)法解密杜窄,它是把一個(gè)任意長(zhǎng)度的字節(jié)串變換成一定長(zhǎng)的大整數(shù)。請(qǐng)注意我使用了"字節(jié)串"而不是"字符串"這個(gè)詞算途,是因?yàn)檫@種變換只與字節(jié)的值有關(guān)塞耕,與字符集或編碼方式無(wú)關(guān)。MD5將任意長(zhǎng)度的"字節(jié)串"變換成一個(gè)128bit的大整數(shù)嘴瓤,并且它是一個(gè)不可逆的字符串變換算法扫外,換句話說(shuō)就是,即使你看到源程序和算法描述廓脆,也無(wú)法將一個(gè)MD5的值變換回原始的字符串筛谚,從數(shù)學(xué)原理上說(shuō),是因?yàn)樵嫉淖址袩o(wú)窮多個(gè)停忿,這有點(diǎn)象不存在反函數(shù)的數(shù)學(xué)函數(shù)驾讲。MD5是不可逆的只有加密沒(méi)有解密。

? ? 2)席赂、單純的 MD5加密是不安全的吮铭,可通過(guò)撞庫(kù)的方式來(lái)暴力破解出來(lái)的,因此可以通過(guò)多種方式來(lái)進(jìn)行加強(qiáng)

???? a.加鹽

???? 最好配合 MD5加鹽的方式來(lái)對(duì)密文進(jìn)行再次處理颅停,即往明文中插入或拼接一個(gè)隨機(jī)的字符串谓晌,然后再進(jìn)行加密。

????????鹽值加如的代碼例子如下

????????password = [passwordstringByAppendingString:salt];????

????b.亂序

???? ????先對(duì)明文進(jìn)行md5加密癞揉,然后對(duì)密文進(jìn)行亂序

???? 3)纸肉、加密強(qiáng)度

? ? ? ? ? ?a、未加鹽:2顆星

? ? ? ? ? b喊熟、加鹽:4顆星

2柏肪、時(shí)間戳/動(dòng)態(tài)密碼 的加密

? ? ? (1)、實(shí)現(xiàn)目標(biāo)

????用戶的密碼是一定的,但是每次發(fā)送給網(wǎng)絡(luò)的密碼都不同.相同的密碼相同的加密算法,每次獲得的值不同.客戶端和服務(wù)器端的時(shí)間是相同的.

????(2)芥牌、原理

??? 客戶端和服務(wù)器端依時(shí)間為基準(zhǔn)采用相同的加密算法

? ? (3)预吆、實(shí)現(xiàn)細(xì)節(jié)

? ? ? ? 客戶端和服務(wù)器端要求時(shí)間一致,時(shí)間精度越高,越安全

????? ? 假如約定網(wǎng)絡(luò)請(qǐng)求延時(shí)3秒

????客戶端: a. 對(duì)請(qǐng)求參數(shù)one進(jìn)行一次AES對(duì)稱加密(或者其他的對(duì)稱加密)胳泉,后形成密文two拐叉。

? ? ? ? ? ? ? ? ? ?b.對(duì)當(dāng)前時(shí)間進(jìn)行一次md5加密后形成three時(shí)間密文

? ? ? ? ? ? ? ? ? c.將密文two與密文three進(jìn)行拼接(或其他算法)岩遗,再進(jìn)行一次AES對(duì)稱加密(或者其他對(duì)稱加密)形成four密文。

? ? ? ? ? ? ? ? ? d.將密文four發(fā)送給服務(wù)器凤瘦。

? ? 服務(wù)端: a.對(duì)收到的密文four進(jìn)行一次AES對(duì)稱解密得到two+three的密文結(jié)合體宿礁。

? ? ? ? ? ? ? ? ? ?b.以收到的時(shí)間為基準(zhǔn)與前3秒時(shí)間遍歷成md5密文,并與結(jié)合體進(jìn)行對(duì)比蔬芥,假如匹配上了梆靖,就將two密文解密出來(lái)。?

? ? ? ? ? ? ? ? ? c.對(duì)two密文進(jìn)行最后的AES對(duì)稱加密然后就得出正確的請(qǐng)求參數(shù)

? ?( 4)笔诵、加密強(qiáng)度:5顆星

3返吻、Base64加密(base64 是一種編碼方式,只能算是淺加密,是對(duì)稱加密)

? ? ?(1)乎婿、概念

?????????? Base64編碼的思想是:采用64個(gè)基本的ASCII碼字符對(duì)數(shù)據(jù)進(jìn)行重新編碼测僵。它將需要編碼的數(shù)據(jù)拆分成字節(jié)數(shù)組,以3個(gè)字節(jié)為一組谢翎,按順序排列24位數(shù)據(jù)捍靠,再把這24位數(shù)據(jù)分成4組,即每組6位森逮;再在每組的的最高位前補(bǔ)兩個(gè)0湊足一個(gè)字節(jié)榨婆,這樣就把一個(gè)3字節(jié)為一組的數(shù)據(jù)重新編碼成了4個(gè)字節(jié);當(dāng)所要編碼的數(shù)據(jù)的字節(jié)數(shù)不是3的整倍數(shù)褒侧,也就是說(shuō)在分組時(shí)最后一組不夠3個(gè)字節(jié)良风,這時(shí)在最后一組填充1到2個(gè)0字節(jié),并在最后編碼完成后在結(jié)尾添加1到2個(gè)=號(hào)闷供。

? ? ?(2)拖吼、特點(diǎn):

????- 數(shù)據(jù)加密之后,數(shù)據(jù)量會(huì)變大这吻,變大1/3左右。

????-可進(jìn)行反向解密篙议。

????-編碼后有個(gè)非常顯著的特點(diǎn)唾糯,末尾有個(gè)=號(hào)。

? ? (3)鬼贱、加密強(qiáng)度:3顆星

3移怯、使用DES加密(對(duì)稱加密)

???? 數(shù)據(jù)加密標(biāo)準(zhǔn)算法(Data Encryption Standard),和BASE64最明顯的區(qū)別就是有一個(gè)公有密鑰这难,該密鑰既用于加密舟误、也用于解密,并且要求密鑰是一個(gè)長(zhǎng)度至少大于8位的字符串姻乓。使用DES加密嵌溢、解密的核心是確保工作密鑰的安全性眯牧。

4、AES加密(對(duì)稱加密)

? ? ?(1)赖草、概念

? ? ? 高級(jí)加密標(biāo)準(zhǔn)Advanced Encryption Standard簡(jiǎn)稱:AES学少,在密碼學(xué)中又稱Rijndael加密法,是美國(guó)聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)秧骑。它是一種對(duì)稱加密算法版确,這個(gè)標(biāo)準(zhǔn)也替代原先的DES標(biāo)準(zhǔn),已經(jīng)被多方分析且廣為全世界所使用乎折。AES設(shè)計(jì)有三個(gè)密鑰長(zhǎng)度:128绒疗、192、256位骂澄,相對(duì)而言吓蘑,AES的128密鑰比DES的56密鑰強(qiáng)1021倍。AES算法主要包括三個(gè)方面:輪變化酗洒、圈數(shù)和密鑰擴(kuò)展士修。

? ? (2)、特點(diǎn)

????AES作為新一代的數(shù)據(jù)加密標(biāo)準(zhǔn)匯聚了強(qiáng)安全性樱衷、高性能棋嘲、高效率、易用和靈活矩桂,在軟件及硬件上都能快速地加解密且只需要很少的存儲(chǔ)資源等優(yōu)點(diǎn)沸移。

? ? (3)、加密強(qiáng)度:4顆星

? ? ?5侄榴、RSA加密(非對(duì)稱加密)

? ? ?(1)雹锣、概念

? ? ? RSA是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的絕大多數(shù)密碼攻擊癞蚕,已被ISO推薦為公鑰數(shù)據(jù)加密標(biāo)準(zhǔn)蕊爵。RSA的公開(kāi)密鑰密碼體制就是使用不同的加密密鑰與解密密鑰,是一種“由已知加密密鑰推導(dǎo)出解密密鑰在計(jì)算上是不可行的”密碼體制桦山。通常是先生成一對(duì)RSA密鑰攒射,其中之一是保密密鑰,由用戶保存恒水;另一個(gè)為公開(kāi)密鑰会放,可對(duì)外公開(kāi),甚至可在網(wǎng)絡(luò)服務(wù)器中注冊(cè)钉凌。為提高保密強(qiáng)度咧最,RSA密鑰至少為500位長(zhǎng),一般推薦使用1024位,這就使加密的計(jì)算量很大矢沿。RSA算法是一種非對(duì)稱密碼算法滥搭,所謂非對(duì)稱,就是指該算法需要一對(duì)密鑰咨察,使用其中一個(gè)加密论熙,則需要用另一個(gè)才能解密。

????????RSA算法是非對(duì)稱加密算法的典型代表摄狱,既能加密脓诡、又能解密。和對(duì)稱加密算法比如DES的明顯區(qū)別在于用于加密媒役、解密的密鑰是不同的祝谚。使用RSA算法,只要密鑰足夠長(zhǎng)(一般要求1024bit)酣衷,加密的信息是不能被破解的交惯。用戶通過(guò)https協(xié)議訪問(wèn)服務(wù)器時(shí),就是使用非對(duì)稱加密算法進(jìn)行數(shù)據(jù)的加密穿仪、解密操作的席爽。

????服務(wù)器發(fā)送數(shù)據(jù)給客戶端時(shí)使用私鑰(private key)進(jìn)行加密,并且使用加密之后的數(shù)據(jù)和私鑰生成數(shù)字簽名(digital

signature)并發(fā)送給客戶端啊片≈欢停客戶端接收到服務(wù)器發(fā)送的數(shù)據(jù)會(huì)使用公鑰(public key)對(duì)數(shù)據(jù)來(lái)進(jìn)行解密,并且根據(jù)加密數(shù)據(jù)和公鑰驗(yàn)證數(shù)字簽名的有效性紫谷,防止加密數(shù)據(jù)在傳輸過(guò)程中被第三方進(jìn)行了修改齐饮。

????????客戶端發(fā)送數(shù)據(jù)給服務(wù)器時(shí)使用公鑰進(jìn)行加密,服務(wù)器接收到加密數(shù)據(jù)之后使用私鑰進(jìn)行解密笤昨。

? ? ?(2)祖驱、特點(diǎn)

?? ?- 密鑰管理的方便,計(jì)算量很大速度相對(duì)比較慢瞒窒。

??? - 安全性很高捺僻,能夠抵抗到目前為止已知的絕大多數(shù)密碼攻擊。

????(3)崇裁、加密強(qiáng)度:4.5顆星

5匕坯、多種加密方式配合加密

? ? ?利用多種加密方式,按照約定的相同算法進(jìn)行配合加密解密寇壳,可以將安全程度大大提升,但永遠(yuǎn)沒(méi)有絕對(duì)安全的加密方式妻怎。

三壳炎、各個(gè)加密方法優(yōu)缺點(diǎn)、應(yīng)用場(chǎng)景 總結(jié)

免費(fèi)的iOS SDK和ipa加固和蘋果審核被拒群:289533769,群里有免費(fèi)的iOS SDK和工程的混淆加固工具匿辩,每天都分享蘋果最新提審過(guò)包策略腰耙,歡迎大家進(jìn)來(lái)一起交流一起進(jìn)步一起過(guò)包!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末铲球,一起剝皮案震驚了整個(gè)濱河市挺庞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌稼病,老刑警劉巖选侨,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異然走,居然都是意外死亡援制,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門芍瑞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)晨仑,“玉大人,你說(shuō)我怎么就攤上這事拆檬『榧海” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵竟贯,是天一觀的道長(zhǎng)答捕。 經(jīng)常有香客問(wèn)我,道長(zhǎng)澄耍,這世上最難降的妖魔是什么噪珊? 我笑而不...
    開(kāi)封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮齐莲,結(jié)果婚禮上痢站,老公的妹妹穿的比我還像新娘。我一直安慰自己选酗,他們只是感情好阵难,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著芒填,像睡著了一般呜叫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上殿衰,一...
    開(kāi)封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天朱庆,我揣著相機(jī)與錄音,去河邊找鬼闷祥。 笑死娱颊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播箱硕,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼拴竹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了剧罩?” 一聲冷哼從身側(cè)響起栓拜,我...
    開(kāi)封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惠昔,沒(méi)想到半個(gè)月后幕与,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舰罚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年纽门,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片营罢。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赏陵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出饲漾,到底是詐尸還是另有隱情蝙搔,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布考传,位于F島的核電站吃型,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏僚楞。R本人自食惡果不足惜勤晚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望泉褐。 院中可真熱鬧赐写,春花似錦、人聲如沸膜赃。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)跳座。三九已至端铛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疲眷,已是汗流浹背禾蚕。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狂丝,地道東北人换淆。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓虚倒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親产舞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359