加密算法隨筆(ios)

加密算法隨筆(ios)

一、加密原則:

1、不能在網絡傳輸過程中明文傳輸

2、本地保存用戶信息不能明文保存

二、加密算法

? 1、RSA? 非對稱加密:私鑰加密,公鑰解密

? ? 秘鑰是個Key:就是一個數字,需要通過因式分解來破解

? ? 現在的計算機破解需要50年

? 2、哈希函數? 散列函數

? ? - MD5

? ? - SHA1

? ? - SHA256/512

? 3、對稱加密

? ? - DES

? ? - 3DES

? ? - AES(高級密碼標準,美國國家安全局使用的,iOS內部使用的也是這個),理論破解時間1萬年(哈哈哈)

4、MD5:

特點:

? ? - 算法公開

? ? - 對相同的數據加密,得到的結果是一樣的

? ? - 對不同的數據加密,得到的結果是定長的(32位字符:a-z 0-9)

? ? - 信息摘要,信息指紋

? ? - 不可逆算

? 破解:

? ? - 散列碰撞(按照一定規律去比較。規律需要研究)

? 例子(c語言的):

? ? uint8_t bugger(CC_MD5_DIGEST_LENGTH) // 開辟空間

? ? CC_MD5(str, (CC_LONG)strlen(str), btffer) // 加密

? ? md5Str = [str stringFromBytes:bugger length:CC_MD5_DIGEST_LENGTH] // 獲取


三、網絡傳輸過程中加密:

目前只靠MD5不夠安全,解決方案

1、再拼接一段字符串key

? ? static? NSString *salt = @"fdjsfeiurdshfjnxvjncxjvnxcjkvnjdkfngdngjndfgndfkjgndfkjgndf" // (足夠長)

? ? pwd = password + salt // 拼接

? ? pwd = pwd.md5 // 加密

? ? 缺點:是寫死在程序里的,容易泄露,根據版本迭代,還不能改

2、HMAC加密算法(基于MD5的)目前一兩年在國內開始增多

? 給定一個秘鑰key(一般從服務器獲取的隨機數(獲取一次),開發人員是無法知道的)

? (明文+key)進行HMAC加密

? 登錄思路:

? 1、用戶輸入賬號密碼

? 2、本地查找是否存在key,如果沒有key,向服務器獲取(發給服務器一個賬號,賬號和key是綁定的),這時候服務器會判斷是否需要進行一些判斷(設備鎖什么的)

? 3、獲取key之后再加密

? 4、登陸

? 以上缺點都是 被抓包后,就沒辦法了

3、加上時間:HMAC加密后的密碼再拼接一個字符串(201712141620)時間,然后再md5

? 時間精確到分,服務器判斷有效期只有1分鐘,防抓包

四、本地加密(例如保存密碼):

鑰匙串保存密碼

? - 蘋果ios7.0.3開放給開發者的

? - 鑰匙串使用的加密算法是AES算法

? - 蘋果原生是C語言,不過有三方庫

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 這篇文章主要講述在Mobile BI(移動商務智能)開發過程中,在網絡通信、數據存儲、登錄驗證這幾個方面涉及的加密...
    雨_樹閱讀 2,704評論 0 6
  • 本文主要介紹移動端的加解密算法的分類、其優缺點特性及應用,幫助讀者由淺入深地了解和選擇加解密算法。文中會包含算法的...
    蘋果粉閱讀 11,586評論 5 29
  • /**ios常見的幾種加密方法: 普通的加密方法是講密碼進行加密后保存到用戶偏好設置( [NSUserDefaul...
    彬至睢陽閱讀 3,005評論 0 7
  • 1.類型成員 1)數據成員:描述對象的狀態-屬性@property:外部狀態 表達實例的狀態 對外的接口問:編譯器...
    羊妞麻麻閱讀 541評論 0 0
  • 1 我是一個殺手,我的槍法在業內沒有第二也有第三,所以我的業績就很好也就很有錢。我之所以做殺手有兩個原因。一是為了...
    花猴閱讀 475評論 0 3