MD5
MD5的全稱是Message-DigestAlgorithm 5,Message-Digest泛指字節串(Message)的Hash變換,就是把一個任意長度的字節串變換成一定長的大整數。請注意我使用了"字節串"而不是"字符串"這個詞,是因為這種變換只與字節的值有關,與字符集或編碼方式無關。 MD5將任意長度的"字節串"變換成一個128bit的大整數,并且它是一個不可逆的字符串變換算法,換句話說就是,即使你看到源程序和算法描述,也無法將一個MD5的值變換回原始的字符串,從數學原理上說,是因為原始的字符串有無窮多個,這有點象不存在反函數的數學函數。
使用:需要導入第三方框架: NSString+Hash
用途:MD5廣泛用于加密和解密技術上,用戶Login的時候,系統是把用戶輸入的密碼計算成MD5值,然后再去和系統中保存的MD5值進行比較,而系統并不"知道"用戶的密碼是什么。
base64
base64 編碼是現代密碼學的基礎,Base64編碼的思想是是采用64個基本的ASCII碼字符對數據進行重新編碼。
1.原本是 8個bit 一組表示數據,改為 6個bit一組表示數據,不足的部分補零,每 兩個0 用 一個 = 表示
2.用base64 編碼之后,數據長度會變大,增加了大約 1/3 左右.(8-6)/6
SSKeyChain鑰匙串
我們將用戶的賬號信息保存到鑰匙串中能保證數據安全的原因是因為只有蘋果公司才知道鑰匙串保存在內存中的哪個位置。
鑰匙串訪問的第三方框架SSKeychain
簡單使用:
參數介紹
Password :需要存儲的密碼信息.
Service :用來標識 app ,app的唯一標識符.
account :賬戶信息,當前密碼所對應的賬號.
非對稱加密
常見的公鑰加密算法有:RSA、ElGamal、背包算法、Rabin(RSA的特例)、迪菲-赫爾曼密鑰交換協議中的公鑰加密算法、橢圓曲線加密算法(英語:Elliptic Curve Cryptography, ECC)。使用最廣泛的是RSA算法(由發明者Rivest、Shmir和Adleman姓氏首字母縮寫而來)是著名的公開秘鑰加密算法。
RSA簡要步驟
RSA使用"秘匙對"對數據進行加密解密.在加密解密數據前,需要先生成公鑰(public key)和私鑰(private key).
公鑰(public key): 用于加密數據. 用于公開, 一般存放在數據提供方, 例如iOS客戶端.
私鑰(private key): 用于解密數據. 必須保密, 私鑰泄露會造成安全問題.
1.生成1024位私鑰 openssl genrsa -out private_key.pem 1024
2.根據私鑰生成CSR文件 openssl req -new -key private_key.pem -out rsaCertReq.csr
3.根據私鑰和CSR文件生成crt文件 openssl x509 -req -days 3650 -in rsaCertReq.csr -signkey private_key.pem -out rsaCert.crt
4.為IOS端生成公鑰der文件 openssl x509 -outform der -in rsaCert.crt -out public_key.der
5.將私鑰導出為這p12文件 openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt