iOS之安全加密

2021-07-29 08:18:23 字數 3437 閱讀 9378

在專案中當我們提交使用者的隱私資料時,比如:登陸密碼、銀行賬號等,一定要使用post請求提交使用者的這些隱私資料。因為get請求的所有引數都直接暴露在url中。同時請求的url一般會記錄在伺服器的訪問日誌中,伺服器的訪問日誌是黑客攻擊的重點物件之一。

僅僅用post請求提交使用者的隱私資料,還是不能完全解決資料安全的問題,我們可以利用軟體(比如charles)設定**伺服器,攔截檢視手機的請求資料。因此:提交使用者的隱私資料時,一定不要明文提交,要加密處理後再提交。

另外,我們也不應該在本地儲存使用者的隱私資料的明文

常見的加密演算法:md5 \ sha \ des \ 3des \ rc2和rc4 \ rsa \ idea \ dsa \ aes。

針對上述加密演算法,我把目前流行的幾種加密方式做下分類:

對稱加密演算法

非對稱加密演算法

重點說一下雜湊函式的特點:

利用這些特點,我們在專案中的應用:

加密密碼:伺服器並不需要知道使用者真實的密碼!

搜尋:比如你要搜尋「張老師 楊老師 蒼老師」和「蒼老師 張老師 楊老師」,其實這兩個要搜尋的內容所表達的意思是一樣的,但是我們應該如何判斷呢。我們可以對搜尋的每個關鍵字進行雜湊,得到三個相對應的結果,按位相加結果如果是一樣的,那搜尋的內容就是一樣的!

張老師 1bdf605991920db11cbdf8508204c4eb

楊老師 2d97fbce49977313c2aae15ea77fec0f

蒼老師 692e92669c0ca340eff4fdcef32896ee

版權: 版權保護,檔案識別。例如可以對檔案內容進行md5,然後可以根據該md5串判斷檔案內容是否被修改過。我以前做im的檔案上傳功能就是這樣判斷的,如果檔案內容的md5相同,表示該檔案已經在伺服器存在了,就不用再次上傳了。

由於md5加密演算法具有較好的安全性,而且免費,因此該加密演算法被廣泛使用。不過遺憾的是該加密演算法已經被暴力破解了,該**記錄超過24萬億條,共占用160t硬碟 的密碼資料,通過對海量資料的搜尋得到的結果!

不過我們可以通過提公升md5加密的安全性,加大被破解的難度。

1. 加「鹽」(佐料)。

2. hmac:給定乙個」秘鑰」,對明文進行加密,並且做」兩次雜湊」!-> 得到的結果,還是 32 個字元。

rsa演算法中,每個通訊主體都有兩個鑰匙,乙個公鑰乙個私鑰。就是有2把鑰匙:使用publickey可以對資料進行加密,使用key才能對資料進行解密。

特點:單方向傳輸

用公鑰加密的資料,只有私鑰能解開(可用於加密);

同時,使用私鑰加密的資料,只有公鑰能解開(簽名)。但是速度很慢(比私鑰加密慢100到1000倍);

公鑰與私鑰:

1.權威數字認證機構(ca)給所有通訊主體(個人或組織)頒發公鑰和私鑰,彼此配對,分別唯一。

2.私鑰好比數字指紋,同時具有解密和加密功能。個人保管,不公開。

3.公鑰好比安全性極高的**信箱位址,公開。

舉例:若甲有乙份需保密的數字商業合同發給乙簽署。經過如下步驟:

甲用乙的公鑰對合同加密。

密文從甲傳送到乙。

乙收到密文,並用自己的私鑰對其解密。

解密正確,經閱讀,乙用自己的私鑰對合同進行簽署。

乙用甲的公鑰對已經簽署的合同進行加密。

乙將密文發給甲。

甲用自己的私鑰將已簽署合同解密。

解密正確,確認簽署。

從以上步驟,我們知道:

用公鑰加密的密文能且只能用與其唯一配對的私鑰才能解開。

如果某份密文被解開,那麼肯定是密文的目標資訊主體解開的。

私鑰因其唯一標識所有者的屬性,被用於數字簽名,具有法律效力。

1.base64簡單說明:

描述:base64可以成為密碼學的基石,非常重要。

特點:可以將任意的二進位制資料進行base64編碼

結果:所有的資料都能被編碼為並只用65個字元就能表示的文字檔案。

65字元:a~z a~z 0~9 + / =

對檔案進行base64編碼後檔案資料的變化:編碼後的資料~=編碼前資料的4/3,會大1/3左右。

2.命令列進行base64編碼和解碼:

編碼:base64 123.png -o 123.txt

解碼:base64 123.txt -o test.png -d

3.base64編碼原理:

1)將所有字元轉化為ascii碼;

2)將ascii碼轉化為8位二進位制;

3)將二進位制3個歸成一組(不足3個在後邊補0)共24位,再拆分成4組,每組6位;

4)統一在6位二進位制前補兩個0湊足8位;

5)將補0後的二進位制轉為十進位制;

6)從base64編碼表獲取十進位制對應的base64編碼;

處理過程說明:

a.轉換的時候,將三個byte的資料,先後放入乙個24bit的緩衝區中,先來的byte佔高位。

b.資料不足3byte的話,於緩衝區中剩下的bit用0補足。然後,每次取出6個bit,按照其值選擇查表選擇對應的字元作為編碼後的輸出。

c.不斷進行,直到全部輸入資料轉換完成。

d.如果最後剩下兩個輸入資料,在編碼結果後加1個「=」;

e.如果最後剩下乙個輸入資料,編碼結果後加2個「=」;

f.如果沒有剩下任何資料,就什麼都不要加,這樣才可以保證資料還原的正確性。

4.在專案中的應用:

1)從ios7.0 開始,蘋果就提供了base64的編碼和解碼支援

2)如果是老專案,則還能看到base64編碼和解碼的第三方框架,如果當前不再支援ios7.0以下版本,則建議替換。

**實現:

//給定乙個字串,對該字串進行base64編碼,然後返回編碼後的結果

-(nsstring *)base64encodestring:(nsstring *)string

//對base64編碼後的字串進行解碼

-(nsstring *)base64decodestring:(nsstring *)string

終端測試命令:

$ echo -n a | base64			

$ echo -n qq== |base64 -d

iOS安全 常用加密

主要介紹ios開發中常用的加密方式 把乙個任意長度的位元組串變換成一定長度的十六進製制的大整數.注意,字串的轉換過程是不可逆的,不能通過加密結果,反向推導出原始內容 基本介紹 md5 應用 使用方法 可進行反向解密 xcode7.0 之後出現的 編碼有個非常顯著的特點,末尾有個 號 將檔案進行加密 ...

安全加密之 PAM

我們在系統中經常要用到各種認證,login登入需要認證,ssh,telnet ftp等需要認證,snmp,smtp等也需要認證,總之既然大家都需要認證,那麼找個人統一管理下好不好。pam有個各個認證模組,關於資源限制的,關於使用者賬號的,關於登入時間的,各個模組,當你的服務需要認證時,你只要把你的需...

iOS開發 資料加密安全防護

開發中,客戶端開發,密碼加密!伺服器不知道使用者的密碼!所以現在沒有 找回密碼 的功能,只有重置密碼!從業務邏輯來講,非對稱加密要比對稱加密要相對安全,但是效率不高,不提倡大量資料的加密的使用,而僅僅對關鍵資料進行使用。import viewcontroller.h import nsstring ...