密碼學

使用時導入 #import <CommonCrypto/CommonCrypto.h>頭文件坝冕,才能使用。

總共分為三大類;

一纬霞、哈希(散列函數(shù))算法

算法公開

對不同的數(shù)據(jù)加密結果是定長的 32位字符!!(所能表示的個數(shù)是不是有限的)

信息摘要(加密之后的數(shù)據(jù)是不可逆!!)

哈希的破解!!

散列碰撞:就是找出兩個不同的數(shù)據(jù)溉知,加密之后得到相同的結果Jバ焚鹊!

使用的說明

比方說:用戶隱私數(shù)據(jù)!! 絕對不能允許明文傳遞:劢臁!(需要加密! —哈希算法)
服務器是不知道用戶的真實密碼D┗肌研叫!(當用戶注冊時,通過哈希算法獲得32位字符璧针,登錄時對比兩個的32位字符) —2010年之前的找回密碼功能!,2010年之后不能找回真實密碼嚷炉。
網(wǎng)絡傳輸數(shù)據(jù)—登錄(用戶密碼)

進行加密的處理方法:

1.直接MD5加密

2.加鹽處理 — 早起的使用!!(就是定義一個復雜的字符串) (密碼 + 鹽).md5

鹽:固定寫死的!探橱!寫死在程序里面的I暌佟!一旦鹽泄漏就不安全了

3. ——HMAC處理(更加的安全) 用一個密鑰加密隧膏,然后做兩次散列哗讥。

在實際開發(fā)中,這個KEY是密鑰私植,這個密鑰是從服務器獲取的
QQ的設備鎖忌栅,使用的就是HMAC

HASH代表的算法

1. MD5(查詢MD5值的網(wǎng)站:www.cmd5.com) (信息指紋)

一般用來做密碼加密!曲稼!
版權問題!!(MD5值對比)
搜索引擎:
搜索內(nèi)容分別為:iOS haha 和 haha iOS ,搜索到的結果是一樣的湖员,怎么辦到的?

   (終端上使用命令:md5 - s “iOS”,獲取MD5值)
    iOS的MD5值:1bdf605991920db11cbdf8508204c4eb
    hank的MD5值:b6dfea72ba631c88abe4a1d17114bfcf
(iOS和hank的MD5值進行位運算得到的結果贫悄,就是兩個搜索到的結果一樣)

百度云&360云盤!娘摔!秒傳U埂!服務器上只要有這個文件凳寺,那么用戶可以實現(xiàn)秒傳!!鸭津。核心就是對比文件MD5的值。

2.SHA 512/256

和MD5差不多

3.HMAC

hamc的使用過程(登錄過程)


hmac算法.png

優(yōu)化的最終使用方案(加入時間戳)


hmac算法最新.png

以下兩種加密算法都是可逆的肠缨!

*明文->加密->密文
*密文->加密->明文

二逆趋、對稱加密算法 (enc)

  加密和解密使用同一個”密鑰”!I罐取闻书!
  密鑰的保密工作非常重要C濉!密鑰一般會定期更換魄眉!密鑰管理非常麻煩E檠巍!

經(jīng)典算法

  • DES 數(shù)據(jù)加密標準(用的少坑律,因為強度不夠岩梳!)
  • 3DES 使用3個密鑰,對相同的數(shù)據(jù)執(zhí)行三次加密晃择,強度增強(更加用的少)
  • AES 高級密碼標準蒋腮,目前美國國家安全局使用的就是AES!!破解需要2000萬年!!

對稱加密算法有兩種加密方式!!

ECB&CBC (cbc比ecb更加安全)

*ECB:電子代碼本,就是說每一個數(shù)據(jù)塊都是獨立加密的
*CBC:密碼塊鏈,使用一個密鑰和一個”初始化向量(IV)(8個字節(jié))”對數(shù)據(jù)執(zhí)行加密轉換藕各!(每一個獨立塊都是有聯(lián)系的)池摧。如果在傳輸數(shù)據(jù)的過程中,一個數(shù)據(jù)塊被破壞了激况,那么整個數(shù)據(jù)都沒法解密了!!

   終端使用openssl進行ECB加密
 openssl enc -des-ecb -K 616263 -nosalt -in abc.txt -out msg1.bin
//CBC加密
openssl enc - des-cbc - iv 0102030405060708 - K616263(abc) -nosalt -in abc.txt - out msg3.bin
查看使用命令 xxd msg3.bin
 終端測試指令
/**
 *  終端測試指令
 *
 *  DES(ECB)加密
 *  $ echo -n hello | openssl enc -des-ecb -K 616263 -nosalt | base64
 *
  * DES(CBC)加密
 *  $ echo -n hello | openssl enc -des-cbc -iv 0102030405060708 -K 616263 -nosalt | base64
 *
 *  AES(ECB)加密
 *  $ echo -n hello | openssl enc -aes-128-ecb -K 616263 -nosalt | base64
 *
 *  AES(CBC)加密
 *  $ echo -n hello | openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt | base64
 *
 *  DES(ECB)解密
 *  $ echo -n HQr0Oij2kbo= | base64 -D | openssl enc -des-ecb -K 616263 -nosalt -d
 *
 *  DES(CBC)解密
 *  $ echo -n alvrvb3Gz88= | base64 -D | openssl enc -des-cbc -iv 0102030405060708 -K 616263 -nosalt -d
 *
 *  AES(ECB)解密
 *  $ echo -n d1QG4T2tivoi0Kiu3NEmZQ== | base64 -D | openssl enc -aes-128-ecb -K 616263 -nosalt -d
 *
 *  AES(CBC)解密
 *  $ echo -n u3W/N816uzFpcg6pZ+kbdg== | base64 -D | openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt -d
 *
 *  提示:
 *      1> 加密過程是先加密作彤,再base64編碼
 *      2> 解密過程是先base64解碼,再解密
 */
    舉例加密字符串:hello
    1.AEC - ECB加密
     終端命令: echo -n hello | openssl enc -aes-128-ecb -K 616263 -nosalt | base64
    解釋命令: echo -n hello是輸出hello結果乌逐,|是管道竭讳,將左邊的值賦值給右邊 , openssl enc -aes-128-ecb -K 616263 -nosalt:通過openssl這個工具進行對稱加密算法的aes浙踢,128是加密強度绢慢,ecb的加密方式, K是key,616263(ASCII碼):就是abc洛波,nosalt:不加鹽胰舆。將加密的二進制文件通過管道進行base64編碼。
  
     2.AEC - ECB解密  base64 -D:解碼
 終端命令:echo -n d1QG4T2tivoi0Kiu3NEmZQ== | base64 -D | openssl enc -aes-128-ecb -K 616263 -nosalt -d

如何查看ASCII碼蹬挤,需要的字符串保存到txt文件中缚窿,然后終端cd到這個存放這個txt文件下,然后使用命令:xxd +txt文件名焰扳,回車倦零,就可以看到ASCII碼(其實就是十六進制)

三、非對稱加密算法(RSA) — 現(xiàn)在加密算法

只能通過因式分解進行破解6趾贰扫茅!

公鑰和私鑰

  • 使用公鑰加密,私鑰解密
  • 使用私鑰加密,公鑰解密
  生成私鑰的命令 :openssl genrsa -out private.pem 512
  通過私鑰生成公鑰的命令:openssl rsa -in private.pem -out public.pem -pubout
查看公鑰和私鑰的命令 cat private.pem/public.pem

將生成的私鑰輸入成txt文本形式
命令: openssl rsa -in private.pem -text -out private.txt

對rsa的使用案例

數(shù)字簽名
從客戶端往服務器發(fā)送數(shù)據(jù)報文,對數(shù)據(jù)進行一次HSAH算法育瓜,得到32位字符葫隙,對MD5進行RSA公鑰加密(數(shù)字簽名),然后數(shù)字報文和數(shù)字簽名后的字符進行打包發(fā)送。服務器拿到數(shù)據(jù)包后爆雹,先對數(shù)據(jù)報文進行HSAH算法停蕉,得到32位字符愕鼓,然后在使用私鑰對數(shù)字簽名的數(shù)據(jù)進行解密,得到32位的字符慧起,然后對比兩個32位字符菇晃,如果不一樣說明數(shù)據(jù)被串改了,那么數(shù)據(jù)沒有被串改蚓挤。


數(shù)字簽名圖.png
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末磺送,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子灿意,更是在濱河造成了極大的恐慌估灿,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缤剧,死亡現(xiàn)場離奇詭異馅袁,居然都是意外死亡,警方通過查閱死者的電腦和手機荒辕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門汗销,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抵窒,你說我怎么就攤上這事弛针。” “怎么了李皇?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵削茁,是天一觀的道長。 經(jīng)常有香客問我掉房,道長茧跋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任圃阳,我火速辦了婚禮厌衔,結果婚禮上,老公的妹妹穿的比我還像新娘捍岳。我一直安慰自己,他們只是感情好睬隶,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布锣夹。 她就那樣靜靜地躺著,像睡著了一般苏潜。 火紅的嫁衣襯著肌膚如雪银萍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天恤左,我揣著相機與錄音贴唇,去河邊找鬼搀绣。 笑死,一個胖子當著我的面吹牛戳气,可吹牛的內(nèi)容都是我干的链患。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼瓶您,長吁一口氣:“原來是場噩夢啊……” “哼麻捻!你這毒婦竟也來了?” 一聲冷哼從身側響起呀袱,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤贸毕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后夜赵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體明棍,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年寇僧,在試婚紗的時候發(fā)現(xiàn)自己被綠了摊腋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡婉宰,死狀恐怖歌豺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情心包,我是刑警寧澤类咧,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站蟹腾,受9級特大地震影響痕惋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜娃殖,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一值戳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧炉爆,春花似錦堕虹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至郁稍,卻和暖如春赦政,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背耀怜。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工恢着, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留桐愉,地道東北人。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓掰派,卻偏偏與公主長得像从诲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子碗淌,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355