一、簡單說明
數(shù)據(jù)安全包含通道加密https和上傳數(shù)據(jù)加密全問題(一些算法加密寡壮,對(duì)稱加密和非對(duì)稱加密)和敬。
加密算法通常分為對(duì)稱性加密算法和非對(duì)稱性加密算法:
1. 對(duì)稱性加密算法,信息接收雙方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是對(duì)數(shù)據(jù)進(jìn)行 加解密了橙凳。
2. 非對(duì)稱算法與之不同蕾殴,發(fā)送雙方A,B事先均生成一堆密匙,然后A將自己的公有密匙發(fā)送給B岛啸,B將自己的公有密匙發(fā)送給A钓觉,
3. 如果A要給B發(fā)送消息,則先需要用B的公有密匙進(jìn)行消息加密坚踩,然后發(fā)送給B端荡灾,此時(shí)B端再用自己的私有密匙進(jìn)行消息解密,B向A發(fā)送消息時(shí)為同樣的道理瞬铸∨希總而言之:公鑰與私鑰的作用是:用公鑰加密的內(nèi)容只能用私鑰解密,用私鑰加密的內(nèi)容只能 用公鑰解密嗓节。
1.說明
在開發(fā)應(yīng)用的時(shí)候荧缘,數(shù)據(jù)的安全性至關(guān)重要,而僅僅用POST請(qǐng)求提交用戶的隱私數(shù)據(jù)拦宣,還是不能完全解決安全問題截粗。
如:可以利用軟件(比如Charles)設(shè)置代理服務(wù)器,攔截查看手機(jī)的請(qǐng)求數(shù)據(jù)
因此:提交用戶的隱私數(shù)據(jù)時(shí)鸵隧,一定不要明文提交绸罗,要加密處理后再提交
2.常見的加密算法
MD5 \ SHA \ DES \ 3DES \ RC2和RC4 \ RSA \ IDEA \ DSA \ AES
3.加密算法的選擇
一般公司都會(huì)有一套自己的加密方案,按照公司接口文檔的規(guī)定去加密
鑰匙串加密操作
MD5:加密后不可逆(只能加密不可解密)豆瘫,我們用于加密用戶的登錄密碼
DES:對(duì)稱加密(服務(wù)器和客戶端公用同一個(gè)秘鑰)珊蟀,缺點(diǎn):一旦被抓包破解了秘鑰,就能破解所有的傳遞信息
RSA:非對(duì)稱加密(會(huì)生成一對(duì)秘鑰(公鑰和私鑰)), 通過MAC終端生成兩個(gè).pem文件外驱,再用vim打開文件系洛,獲取里面的字符串(也就是秘鑰)俊性,
二、MD5
1.簡單說明
MD5:全稱是Message Digest Algorithm 5描扯,譯為“消息摘要算法第5版”
效果:對(duì)輸入信息生成唯一的128位散列值(32個(gè)字符)
2.MD5的特點(diǎn)
(1)輸入兩個(gè)不同的明文不會(huì)得到相同的輸出值
(2)根據(jù)輸出值定页,不能得到原始的明文,即其過程不可逆
3.MD5的應(yīng)用
由于MD5加密算法具有較好的安全性绽诚,而且免費(fèi)典徊,因此該加密算法被廣泛使用
主要運(yùn)用在數(shù)字簽名、文件完整性驗(yàn)證以及口令加密等方面
4.MD5破解
MD5解密網(wǎng)站:http://www.cmd5.com
5.MD5改進(jìn)
現(xiàn)在的MD5已不再是絕對(duì)安全恩够,對(duì)此卒落,可以對(duì)MD5稍作改進(jìn),以增加解密的難度
加鹽(Salt):在明文的固定位置插入隨機(jī)串蜂桶,然后再進(jìn)行MD5
先加密儡毕,后亂序:先對(duì)明文進(jìn)行MD5,然后對(duì)加密得到的MD5串的字符進(jìn)行亂序
總之宗旨就是:黑客就算攻破了數(shù)據(jù)庫扑媚,也無法解密出正確的明文
三腰湾、RSA基本原理
RSA使用"秘匙對(duì)"對(duì)數(shù)據(jù)進(jìn)行加密解密.在加密解密數(shù)據(jù)前,需要先生成公鑰(public key)和私鑰(private key).
* 公鑰(public key): 用于加密數(shù)據(jù). 用于公開, 一般存放在數(shù)據(jù)提供方, 例如iOS客戶端.
* 私鑰(private key): 用于解密數(shù)據(jù). 必須保密, 私鑰泄露會(huì)造成安全問題.
iOS中的Security.framework提供了對(duì)RSA算法的支持.這種方式需要對(duì)密匙對(duì)進(jìn)行處理, 根據(jù)public key生成證書, 通過private key生成p12格式的密匙.
除了Secruty.framework, 也可以將openssl庫編譯到iOS工程中, 這可以提供更靈活的使用方式.
四、base64簡介
Base64編碼可用于在HTTP環(huán)境下傳遞較長的標(biāo)識(shí)信息疆股。例如费坊,在Java Persistence系統(tǒng)Hibernate中,就采用了Base64來將一個(gè)較長的唯一標(biāo)識(shí)符(一般為128-bit的UUID)編碼為一個(gè)字符串旬痹,用作HTTP表單和HTTP GET URL中的參數(shù)附井。在其他應(yīng)用程序中,也常常需要把二進(jìn)制數(shù)據(jù)編碼為適合放在URL(包括隱藏表單域)中的形式两残。此時(shí)永毅,采用Base64編碼不僅比較簡短,同時(shí)也具有不可讀性人弓,即所編碼的數(shù)據(jù)不會(huì)被人用肉眼所直接看到卷雕。