數(shù)據(jù)加密

數(shù)據(jù)安全

  • 數(shù)據(jù)安全的原則
    1)在網(wǎng)絡(luò)上"不允許"傳輸用戶隱私數(shù)據(jù)的"明文"
    2)在本地"不允許"保存用戶隱私數(shù)據(jù)的"明文"
  • 請(qǐng)求的方法
  1. 一定要使用POST請(qǐng)求提交用戶的隱私數(shù)據(jù)
    這個(gè)請(qǐng)求的方式,可以將于用戶相關(guān)的信息全部放在一個(gè)請(qǐng)求體內(nèi),不會(huì)暴露在請(qǐng)求的URL中
  2. GET請(qǐng)求的所有參數(shù)都直接暴露在了URL中
    這個(gè)請(qǐng)求的方式,會(huì)將用戶的私人信息暴露在請(qǐng)求的URL內(nèi),不利于私人信息的保密
  3. 請(qǐng)求的URL一般會(huì)記錄在服務(wù)器的訪問日志中
  4. 服務(wù)器的訪問日志是黑客攻擊的重點(diǎn)對(duì)象之一
  • 用戶的隱私數(shù)據(jù)都包含哪些
    用戶的隱私數(shù)據(jù),一般都包含用戶的賬號(hào)/密碼,銀行的賬號(hào)等等
  • 數(shù)據(jù)攔截的方式
    1.數(shù)據(jù)的攔截有多種多樣的方式,作為編程人員,平時(shí)最常做的接口驗(yàn)證,需要攔截?cái)?shù)據(jù),查看請(qǐng)求到的數(shù)據(jù)是否正常,這里常用的到軟件是Charles
    2.平時(shí)僅僅使用POST請(qǐng)求提交用戶的隱私數(shù)據(jù),還是不能完全的解決安全問題,因?yàn)榭梢允褂密浖?比如Charles),通過設(shè)置代理服務(wù)器,可以攔截并查看手機(jī)客戶端的請(qǐng)求數(shù)據(jù),因此,在提交用戶的隱私數(shù)據(jù)時(shí),一定不要明文(包括POST請(qǐng)求方式中的請(qǐng)求體內(nèi)管用用戶隱私的內(nèi)容)提交,必須要加密處理后再提交
  • 信息安全所面臨的威脅
  1. 機(jī)密性(面臨著被竊聽,秘密泄露的威脅)
  2. 完整性(面臨著被篡改,信息被修改的威脅)
  3. 認(rèn)證(偽裝,指的是偽裝成通信雙方,以成功獲取對(duì)象的認(rèn)證)
  4. 不可否認(rèn)性(否認(rèn),是指事后不承認(rèn)是自己發(fā)送的)


  • 常用的加密算法
    最常用的加密算法用如下幾種:
    MD5 \ SHA \ DES \ 3DES \ RC2和RC4 \RSA \ IDEA \ DSA \ AES
  • 加密算法的選擇
    一般公司都會(huì)有一套自己的加密方案,按照公司接口文檔的規(guī)定去加密

常見的加密算法

  • Base64編碼

    • 簡單說明

      • HTTP將Base64編碼用于基本的認(rèn)證和摘要認(rèn)證
      • 其可以方便的將用戶的任何輸入轉(zhuǎn)換成只包含特定字符的安全格式,服務(wù)于網(wǎng)絡(luò)通信過程
      • Base64可以成為密碼學(xué)的基石谷扣,非常重要碍沐。
    • 特點(diǎn):

      1. 可以將任意的二進(jìn)制數(shù)據(jù)進(jìn)行Base64編碼
      2. 所有的數(shù)據(jù)都能被編碼為,只用65個(gè)字符就能表示的文本文件。
      3. 編碼后的65個(gè)字符包括 : A~Z a~z 0~9 + / =
      4. 對(duì)文件進(jìn)行base64編碼后文件數(shù)據(jù)的變化:編碼后的數(shù)據(jù) 約等于 編碼前數(shù)據(jù)的4/3躏升,會(huì)比原始的數(shù)據(jù)大1/3(33%)左右。
      5. 能夠進(jìn)行逆運(yùn)算
      6. 不夠安全,但卻被很多加密算法作為編碼格式
  • 通過"終端命令行"實(shí)現(xiàn)Base64編碼和解碼

    編碼:base64 123.png -o 123.txt
    解碼:base64 123.txt -o test.png -D
  • Base64編碼原理
    1)將所有字符轉(zhuǎn)化為ASCII碼池凄;
    2)將ASCII碼轉(zhuǎn)化為8位二進(jìn)制蜡感;
    3)將二進(jìn)制3個(gè)歸成一組(不足3個(gè)在后邊補(bǔ)0)共24位,再拆分成4組打月,每組6位;
    4)統(tǒng)一在6位二進(jìn)制前補(bǔ)兩個(gè)0湊足8位蚕捉;
    5)將補(bǔ)0后的二進(jìn)制轉(zhuǎn)為十進(jìn)制奏篙;
    6)從Base64編碼表獲取十進(jìn)制對(duì)應(yīng)的Base64編碼;
  • 處理過程
    a.轉(zhuǎn)換的時(shí)候迫淹,將三個(gè)byte的數(shù)據(jù)秘通,先后放入一個(gè)24bit的緩沖區(qū)中,先來的byte占高位敛熬。
    b.數(shù)據(jù)不足3byte的話肺稀,于緩沖區(qū)中剩下的bit用0補(bǔ)足。然后荸型,每次取出6個(gè)bit盹靴,按照其值選擇查表選擇對(duì)應(yīng)的字符作為編碼后的輸出。
    c.不斷進(jìn)行瑞妇,直到全部輸入數(shù)據(jù)轉(zhuǎn)換完成稿静。
    d.如果最后剩下兩個(gè)輸入數(shù)據(jù),在編碼結(jié)果后加1個(gè)“=”辕狰;
    e.如果最后剩下一個(gè)輸入數(shù)據(jù)改备,編碼結(jié)果后加2個(gè)“=”;
    f.如果沒有剩下任何數(shù)據(jù)蔓倍,就什么都不要加悬钳,這樣才可以保證資料還原的正確性。
  • 編碼&解碼方式
    編碼
    • 編碼方式一 : 通過將給定的字符串轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)后進(jìn)行Base64編碼,輸出的編碼結(jié)果是一個(gè)二進(jìn)制數(shù)據(jù)
      方法 : -(NSData*)base64EncodedDataWithOptions(NSDataBase64EncodingOptions);
      返回的是NSData
-(NSString *)base64Encodeing1:(NSString *)string
{
    //將字符串轉(zhuǎn)換成二進(jìn)制
    NSData * data = [string dataUsingEncoding:NSUTF8StringEncoding];
    //對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行base64編碼
    NSData * codeData = [data base64EncodedDataWithOptions:0];
    //將編碼后的二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成字符串后輸出
    return [[NSString alloc] initWithData:codeDataencoding:NSUTF8StringEncoding];
}
  • 編碼方式二 : 將給定的字符串轉(zhuǎn)換成二進(jìn)制后,進(jìn)行Base64編碼,輸出的編碼結(jié)果是字符串
    - (NSString *)base64EncodedStringWithOptions(NSDataBase64EncodingOptions);
    返回的是NSString
-(NSString *)base64Encodeing2:(NSString *)string
{
    //將字符串轉(zhuǎn)換成二進(jìn)制
    NSData * data = [string dataUsingEncoding:NSUTF8StringEncoding];
    //將二進(jìn)制數(shù)據(jù)通過base64編譯成字符串
    return [data base64EncodedStringWithOptions:0];
}

解碼

  • 解碼方式一 : 通過將經(jīng)過Base64編碼后的字符串轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)后,進(jìn)行解碼
    -(nullable instancetype)initWithBase64EncodedData:(NSData *)base64Data options:(NSDataBase64DecodingOptions);
    上邊的方法是NSData的方法,通過一個(gè)二進(jìn)制數(shù)據(jù),返回的實(shí)例對(duì)象是NSData對(duì)象
-(NSString *)base64Decodeing1:(NSString *)string
{
    //將字符串轉(zhuǎn)換成二進(jìn)制
    NSData * data = [string dataUsingEncoding:NSUTF8StringEncoding];
    //將二進(jìn)制數(shù)據(jù)通過base64進(jìn)行解碼
    NSData * deCode = [[NSData alloc] initWithBase64EncodedData:data options:0];
    //將解碼 后的二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成字符串
    return [[NSString alloc] initWithData:deCode encoding:NSUTF8StringEncoding];
}
  • 解碼方式二 : 直接將經(jīng)過Base64編碼后的字符串進(jìn)行解碼
    -(nullable instancetype)initWithBase64EncodedString:(NSString *)base64String options:(NSDataBase64DecodingOptions);
    上邊的方法是NSData的方法,通過一個(gè)字符串,返回一個(gè)實(shí)例對(duì)象是NSData的對(duì)象
-(NSString *)base64Decodeing2:(NSString *)string
{
    //解碼字符串,并轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)
    NSData * deCodeData = [[NSData alloc] initWithBase64EncodedString:string options:0];
    //將解碼后的二進(jìn)制數(shù)據(jù),轉(zhuǎn)換成字符串,并返回
    return [[NSString alloc] initWithData:deCodeData encoding:NSUTF8StringEncoding];
}

常見的其他加密算法

  • 常見的加密算法
    1. 消息摘要(單向散列函數(shù))包括:MD5 \ SHA1 \ SHA256 \ SHA512等
    2. 消息認(rèn)證 包括 : HMAC-MD5 \ HMAC-SHA1
    3. 對(duì)稱加密 包括 : DES \ 3DES \ AES(高級(jí)加密標(biāo)準(zhǔn))
    4. 非對(duì)稱加密 包括 : RSA
    5. 數(shù)字簽名
    6. 證書等
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末偶翅,一起剝皮案震驚了整個(gè)濱河市默勾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌聚谁,老刑警劉巖母剥,帶你破解...
    沈念sama閱讀 212,294評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異形导,居然都是意外死亡环疼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門朵耕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炫隶,“玉大人,你說我怎么就攤上這事阎曹∥苯祝” “怎么了煞檩?”我有些...
    開封第一講書人閱讀 157,790評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長望门。 經(jīng)常有香客問我形娇,道長,這世上最難降的妖魔是什么筹误? 我笑而不...
    開封第一講書人閱讀 56,595評(píng)論 1 284
  • 正文 為了忘掉前任桐早,我火速辦了婚禮,結(jié)果婚禮上厨剪,老公的妹妹穿的比我還像新娘哄酝。我一直安慰自己,他們只是感情好祷膳,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,718評(píng)論 6 386
  • 文/花漫 我一把揭開白布陶衅。 她就那樣靜靜地躺著,像睡著了一般直晨。 火紅的嫁衣襯著肌膚如雪搀军。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,906評(píng)論 1 290
  • 那天勇皇,我揣著相機(jī)與錄音罩句,去河邊找鬼。 笑死敛摘,一個(gè)胖子當(dāng)著我的面吹牛门烂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播兄淫,決...
    沈念sama閱讀 39,053評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼屯远,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了捕虽?” 一聲冷哼從身側(cè)響起慨丐,我...
    開封第一講書人閱讀 37,797評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎泄私,沒想到半個(gè)月后咖气,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,250評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挖滤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,570評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了浅役。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斩松。...
    茶點(diǎn)故事閱讀 38,711評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖觉既,靈堂內(nèi)的尸體忽然破棺而出惧盹,到底是詐尸還是另有隱情乳幸,我是刑警寧澤,帶...
    沈念sama閱讀 34,388評(píng)論 4 332
  • 正文 年R本政府宣布钧椰,位于F島的核電站粹断,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嫡霞。R本人自食惡果不足惜瓶埋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,018評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诊沪。 院中可真熱鬧养筒,春花似錦、人聲如沸端姚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渐裸。三九已至巫湘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間昏鹃,已是汗流浹背尚氛。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盆顾,地道東北人怠褐。 一個(gè)月前我還...
    沈念sama閱讀 46,461評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像您宪,于是被迫代替她去往敵國和親奈懒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,595評(píng)論 2 350

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

  • 1.數(shù)據(jù)安全 01數(shù)據(jù)安全的原則1)在網(wǎng)絡(luò)上"不允許"傳輸用戶隱私數(shù)據(jù)的"明文"2.)在本地"不允許"保存用戶隱私...
    陳賀閱讀 2,153評(píng)論 0 2
  • 1.數(shù)據(jù)安全 01數(shù)據(jù)安全的原則1)在網(wǎng)絡(luò)上"不允許"傳輸用戶隱私數(shù)據(jù)的"明文"2.)在本地"不允許"保存用戶隱私...
    小楓123閱讀 455評(píng)論 0 1
  • 前言 iOS系統(tǒng)由于其封閉性其安全系數(shù)要比安卓高不少宪巨,但是依然有插件可以捕捉到iOS端敏感數(shù)據(jù)磷杏,特別是以plist...
    laitys閱讀 1,880評(píng)論 0 9
  • 數(shù)據(jù)加密/數(shù)據(jù)安全: l 安全的原則 ? 1)在網(wǎng)絡(luò)上不允許傳輸用戶隱私數(shù)據(jù)的明文 ? 2)在本地不允許保存...
    成功沒有捷徑_LBQ閱讀 367評(píng)論 0 0
  • 條紋元素經(jīng)典搭配,每個(gè)姑娘的衣櫥里都應(yīng)該有不同類型的條紋款式捏卓。 我個(gè)人很喜歡穿條紋极祸,室友總說我養(yǎng)了...
    遙遠(yuǎn)的她她閱讀 268評(píng)論 0 0