破解APP登錄密碼原來這么簡單

序言

iOS開發(fā)安全問題是不容忽視的肛鹏,在傳統(tǒng)互聯(lián)網(wǎng)領(lǐng)域肃晚,安全已然是一個老生常談的話題畔柔。業(yè)界大佬都不惜重金打造軟件安全部哼丈,用于檢測自己產(chǎn)品的安全性。縱使如此游沿,仍時常爆出許多安全問題引發(fā)新聞饰抒。當今,移動互聯(lián)網(wǎng)時代诀黍,iOS應用由于直接運行在用戶的手機上袋坑,相比運行在服務器的后臺服務,更有可能被黑客攻擊眯勾。大部分的iOS應用都需要連網(wǎng)枣宫,通過和服務器端進行通信,獲得最新的信息并且將內(nèi)容展現(xiàn)給用戶吃环。由于網(wǎng)絡傳輸過程中有可能經(jīng)過不安全的中間節(jié)點也颤,所以我們應該對敏感數(shù)據(jù)加密,用于保證用戶信息的安全郁轻。

接下來小編會來淺談一下iOS開發(fā)中的幾種加密算法翅娶,同時小編也歡迎大家加入小編的iOS交流群551346706,群里會提供相關(guān)資料好唯,書籍歡迎大家入駐竭沫!

Base64編碼原理

Base64編碼之所以稱為Base64,是因為其使用64個字符來對任意數(shù)據(jù)進行編碼骑篙,同理有Base32蜕提、Base16編碼。標準Base64編碼使用的64個字符為:

Base64編碼表

這64個字符是各種字符編碼(比如ASCII編碼)所使用字符的子集靶端,基本谎势,并且可打印。唯一有點特殊的是最后兩個字符杨名,因?qū)ψ詈髢蓚€字符的選擇不同脏榆,Base64編碼又有很多變種,比如Base64 URL編碼镣煮。

Base64編碼本質(zhì)上是一種將二進制數(shù)據(jù)轉(zhuǎn)成文本數(shù)據(jù)的方案姐霍。對于非二進制數(shù)據(jù)鄙麦,是先將其轉(zhuǎn)換成二進制形式典唇,然后每連續(xù)6比特(2的6次方=64)計算其十進制值,根據(jù)該值在上面的索引表中找到對應的字符胯府,最終得到一個文本字符串介衔。

Base64的特點:可進行反向解密,Xcode7.0 之后出現(xiàn)的骂因,編碼有個非常顯著的特點,末尾有個?=?號

將文件進行加密

// 獲取需要加密文件的二進制數(shù)據(jù)NSData*data = [NSDatadataWithContentsOfFile:@"/Users/wangpengfei/Desktop/photo/IMG_5551.jpg"];

// 或 base64EncodedStringWithOptionsNSData*base64Data = [data base64EncodedDataWithOptions:0];

// 將加密后的文件存儲到桌面[base64Data writeToFile:@"/Users/wangpengfei/Desktop/123"atomically:YES];

將文件進行解密

// 獲得加密后的二進制數(shù)據(jù)NSData*base64Data = [NSDatadataWithContentsOfFile:@"/Users/wangpengfei/Desktop/123"];

// 解密 base64 數(shù)據(jù)NSData*baseData = [[NSDataalloc] initWithBase64EncodedData:base64Data options:0];

// 寫入桌面[baseData writeToFile:@"/Users/wangpengfei/Desktop/IMG_5551.jpg"atomically:YES];

利用終端命令進行base64運算:

// 將文件 meinv.jpg 進行 base64運算之后存儲為 meinv.txtbase64 meinv.jpg -o meinv.txt

// 講meinv.txt 解碼生成 meinv.pngbase64 -D meinv.txt -o meinv.png

// 將字符串 "hello" 進行 base 64 編碼 結(jié)果:aGVsbG8=cho "hello" | base64

// 將 base64編碼之后的結(jié)果 aGVsbG8= 反編碼為字符串echoaGVsbG8= | base64 -D

MD5加密--(信息-摘要算法) 哈希算法之一

基本介紹

需要導入第三方框架: NSString+Hash

MD5特點:

壓縮性 : 任意長度的數(shù)據(jù),算出的 MD5 值長度都是固定的.

容易計算 : 從原數(shù)據(jù)計算出 MD5 值很容易.

抗修改性: 對原數(shù)據(jù)進行任何改動,哪怕只修改一個字節(jié),所得到的 MD5 值都有很大區(qū)別.

弱抗碰撞 : 已知原數(shù)據(jù)和其 MD5 值,想找到一個具有相同 MD5 值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的.

強抗碰撞: 想找到兩個不同數(shù)據(jù),使他們具有相同的 MD5 值,是非常困難的

MD5 應用:

一致性驗證:MD5將整個文件當做一個大文本信息,通過不可逆的字符串變換算法,產(chǎn)生一個唯一的MD5信息摘要.就像每個人都有自己獨一無二的指紋,MD5對任何文件產(chǎn)生一個獨一無二的數(shù)字指紋.

利用 MD5 來進行文件校驗,被大量應用在軟件下載站,論壇數(shù)據(jù)庫,系統(tǒng)文件安全等方面(是否認為添加木馬炎咖,篡改文件內(nèi)容等).百度‘MD5’第一個網(wǎng)站進去,利用數(shù)據(jù)庫偽解密,即反查詢

數(shù)字簽名;

安全訪問認證

使用方法

利用 MD5 對字符串進行加密

NSString*password =@"WangPengfei";

?password = [password md5String];

NSLog(@"password1:%@", password);

加鹽:可以保證 MD5加密之后更加安全

NSString*salt =@"234567890-!@#$%^&*()_+QWERTYUIOP{ASDFGHJKL:XCVBNM<>";

?[password stringByAppendingString:salt];

?password = [password md5String];

NSLog(@"password2:%@", password);

每一個公司都有自己的“鹽值”,鹽值越復雜乘盼,越安全小編也從網(wǎng)上找了一張加密的圖:大家可以看看

時間戳密碼

基本介紹

動態(tài)密碼:相同的密碼明文+相同的加密算法-->因為每次登陸時間都不同,所以每次計算出的結(jié)果也都不相同.可以充分保證密碼的安全性.

服務器會計算兩個時間值,當期時間和前一分鐘的時間(比如:第59S發(fā)送的網(wǎng)絡請求,一秒鐘后服務器收到并作出響應,這時服務器當前時間比客戶端發(fā)送時間晚一分鐘升熊,仍然能夠判斷準確的值)

使用步驟

獲取MD5 首次加密的密碼

// 1. 當前密碼

NSString*password =@"zhang";

// 2. hmacKey值,是對“WangPengfei” 進行 MD5加密之后的值(動態(tài)生成的)

NSString*hmacKey =@"d3bba33b51acaa0a272de7a2f6dfa233";

加密過程

// 1. 第一次加密:第一次 HMAC 運算

password = [password hmacMD5StringWithKey:hmacKey];

// 2.1 獲得當前的時間

NSDate*date = [NSDatedate];

// 2.2 獲得當前時間的字符串

// 實例化時間格式器NSDateFormatter*formatter = [[NSDateFormatteralloc] init];

// 設置時間格式

formatter.dateFormat =@"yyyy-MM-dd HH:mm";

// 獲取當前時間(要和服務器保持一致)

NSString*dateStr = [formatter stringFromDate:date];

// 3. 將第一次加密后的密碼與當前時間的字符串拼接在一起

password = [password stringByAppendingString:dateStr];

// 4. 進行第二次 HMAC 加密

password = [password hmacMD5StringWithKey:hmacKey];

訪問 loginhmac.php 接口,發(fā)送請求

創(chuàng)建請求

NSURL*url = [NSURLURLWithString:@"http://localhost/login/loginhmac.php"];

// POST 要手動設置方法绸栅,因此為可變

NSMutableURLRequest*request = [NSMutableURLRequestrequestWithURL:url];

// 設置請求方法

request.HTTPMethod =@"POST";

// 設置請求體內(nèi)容

NSString*body = [NSStringstringWithFormat:@"username=zhangsan&password=%@", password]; request.HTTPBody = [body dataUsingEncoding:NSUTF8StringEncoding];

發(fā)送請求

[[[NSURLSessionsharedSession] dataTaskWithRequest:request completionHandler:^(NSData* _Nullable data,NSURLResponse* _Nullable response,NSError* _Nullable error) {

NSLog(@"%@", [[NSStringalloc] initWithData:data encoding:NSUTF8StringEncoding]); }] resume];

鑰匙串訪問

基本介紹

蘋果在 iOS 7.0.3版本以后公布鑰匙串訪問的SDK.鑰匙串訪問接口是純C語言的.

鑰匙串使用 AES 256加密算法,能夠保證用戶密碼的安全.

鑰匙串訪問的第三方框架SSKeychain,是對C語言框架的封裝.注意:不需要看源碼.

鑰匙串訪問的密碼保存在哪里?只有蘋果才知道.這樣進一步保障了用戶的密碼安全.

簡單使用

參數(shù)介紹

Password :需要存儲的密碼信息.

Service :用來標識 app ,app的唯一標識符.

account :賬戶信息,當前密碼所對應的賬號.

利用鑰匙串進行加密

從鑰匙串加載密碼

指紋識別

簡單介紹

指紋識別功能是 iphone 5S之后推出的.SDK是 iOS 8.0 推出!

推出指紋識別功能的目的,是為了簡化移動支付環(huán)節(jié),占領(lǐng)移動支付市場.

使用步驟

導入框架

獲得當前系統(tǒng)版本號

實例化指紋識別對象,判斷當前設備是否支持指紋識別功能(是否帶有TouchID)

指紋登陸(默認是異步方法)

[laCtx evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"指紋登陸"reply:^(BOOLsuccess,NSError*error) {

// 如果成功,表示指紋輸入正確.

if(success) {

NSLog(@"指紋識別成功!");?

?}else{

NSLog(@"指紋識別錯誤,請再次嘗試");?

?}?

?}];

總結(jié)

由于移動互聯(lián)網(wǎng)的快速發(fā)展级野,人們的購物、理財?shù)刃枨笠苍谝苿佣顺霈F(xiàn)粹胯,使得移動應用的安全性越來越重要蓖柔。由于部署在用戶終端上,移動應用比服務器應用更容易被攻擊风纠,大家也需要在移動應用的網(wǎng)絡通信况鸣、本地文件和數(shù)據(jù)、源代碼三方面做好防范竹观,只有這樣才能保證應用安全镐捧。

今天給大家的分享就到這吧!有收獲臭增,或者喜歡小編的可以關(guān)注小編同時也歡迎大家加入小編的iOS交流群551346706愤估,大家一起交流成長!速址!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玩焰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子芍锚,更是在濱河造成了極大的恐慌昔园,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件并炮,死亡現(xiàn)場離奇詭異默刚,居然都是意外死亡,警方通過查閱死者的電腦和手機逃魄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門荤西,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人伍俘,你說我怎么就攤上這事邪锌。” “怎么了癌瘾?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵觅丰,是天一觀的道長。 經(jīng)常有香客問我妨退,道長妇萄,這世上最難降的妖魔是什么蜕企? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮冠句,結(jié)果婚禮上轻掩,老公的妹妹穿的比我還像新娘。我一直安慰自己懦底,他們只是感情好放典,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著基茵,像睡著了一般奋构。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拱层,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天弥臼,我揣著相機與錄音,去河邊找鬼根灯。 笑死径缅,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的烙肺。 我是一名探鬼主播纳猪,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桃笙!你這毒婦竟也來了氏堤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤搏明,失蹤者是張志新(化名)和其女友劉穎鼠锈,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體星著,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡购笆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了虚循。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片同欠。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖横缔,靈堂內(nèi)的尸體忽然破棺而出铺遂,到底是詐尸還是另有隱情,我是刑警寧澤剪廉,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布娃循,位于F島的核電站,受9級特大地震影響斗蒋,放射性物質(zhì)發(fā)生泄漏捌斧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一泉沾、第九天 我趴在偏房一處隱蔽的房頂上張望捞蚂。 院中可真熱鬧,春花似錦跷究、人聲如沸姓迅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丁存。三九已至,卻和暖如春柴我,著一層夾襖步出監(jiān)牢的瞬間解寝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工艘儒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留聋伦,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓界睁,卻偏偏與公主長得像觉增,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子翻斟,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容