單向散列函數

  • 單向散列函數的說明
    1. 單向散列函數也稱為消息摘要函數, 哈希函數 或者 雜湊函數
    2. 單向散列函數輸出的散列值又稱為消息摘要 或者 指紋
  • 經典算法
    單項散列函數的經典算法,包括 : MD4\MD5\SHA1\SHA256\SHA512等
  • 單向散列函數的特點:
    1. 加密后密文的長度是定長的(即對任意長度的消息三列,得到的散列值是定長的)
    2. 散列計算速度快,非常高效
    3. 如果明文不一樣,那么散列后的結果一定不一樣
    4. 如果明文一樣,那么加密后的密文一定一樣(對相同數據加密,加密后的密文一樣)
    5. 所有的加密算法是公開的
    6. 具備單向性,不可以逆推反算
MD5
  • 加密算法說明
    MD5全稱是Message Digest Algorithm 5,譯為"消息摘要算法第5版"是由Rivest 于1991年設計的單項散列函數

  • MD5的特點
    1)對字符串進行MD5加密可以得到一個32個字符的密文
    對輸入的信息生成唯一的一個128位散列值(32個字符)
    2)加密之后不能根據密文逆推出明文
    根據輸出值,不能得到原始的明文,即其過程不可逆
    明文不同,則散列值一定不同
    明文相同,則散列值一定相同
    3)MD5已經被破解(暴力破解|碰撞檢測)
    1)MD5解密網站:http://www.cmd5.com
    2)MD5的強抗碰撞性已經被證實攻破,即對于重要數據不應該再繼續使用MD5加密。

  • 提交隱私數據的安全過程 - 注冊

    注冊

  • 提交隱私數據的安全過程 - 登錄

    登錄

    結論:用戶的隱私數據,只有在用戶輸入那一刻是明文,其他情況都是密文處理

  • 消息認證碼

    • 消息認證碼特點
      ①消息的發送者和接收者有一個共享密鑰
      ②發送者使用共享密鑰對消息加密計算得到MAC值(消息認證碼)
      ③消息接收者使用共享密鑰對消息加密計算得到MAC值
      ④比較兩個MAC值是否一致
    • 經典算法
      ①HMAC-MD5(先用密鑰加密,然后進行兩次散列計算)
      ②HMAC-SHA1
    • 使用
      ①客戶端需要在發送的時候把(消息)+(消息·HMAC)一起發送給服務器
      ②服務器接收到數據后,對拿到的消息用共享的KEY進行HMAC,比較是否一致,如果一致則信任
      消息認證流程示意圖
  • MD5加密進階
    **注意 : **現在的MD5已不再是絕對安全,對此,可以對MD5稍作改進,以增加解密的難度

  1. 加鹽(Salt):在明文的固定位置插入隨機串,然后再進行MD5加密
    MD5進階的加密方式
  2. 先加密,后亂序:先對明文進行MD5,然后對加密得到的MD5串的字符進行亂序
  3. 先亂序,后加密:先對明文字符串進行亂序處理,然后對得到的串進行加密
  4. 先亂序,再加鹽,再多次MD5加密等
  5. 使用消息認證機制,即HMAC-MD5-先對密鑰進行加密,加密之后進行兩次MD5散列
    總之宗旨就是:黑客就算攻破了數據庫,也無法解密出正確的明文
  6. 終端命令行加密
    MD5加密-字符串 $ echo -n "520it" |md5
    MD5加密-文件1 $ md5 abc.png
    SHA1加密: $ echo -n "520it" |openssl sha -sha1
    SHA256 $ echo -n "520it" |openssl sha -sha256
    SHA512 $ echo -n "520it" |openssl sha -sha512
    hmacMD5加密 $ echo -n "520it" |openssl dgst -md5 -hmac "123"
  • MD5的應用
  1. 加密
  2. 搜索 : 多個關鍵字,先對每個關鍵字進行散列,然后多個關鍵字進行或運算,如果值一致則搜索結果一致
  3. 文件完整性驗證 : 對整個文件進行散列,比較散列值判斷文件是否完整或被篡改
  4. 版權 : 對文件進行散列判斷該文件是否是正版或原版的
  • MD5加密示例代碼
    方式一:直接加密
    NSString * str = @"ZhaoJing";
    NSString * str1 = [str md5String];
    NSLog(@"%@",str1);

方式二:通過加鹽的方式加密

//說明:鹽要足夠的長,足夠的復雜,這樣加密后的安全性更高
    NSString * salt = @"ahfqjhfguyrgflhfvagfliergflaigalgLAGFLAFLiglGLglIGLIgLGLEGLiwgf";
    NSString * str2 = [str stringByAppendingString:salt];
    NSString * str3 = [str2 md5String];
    NSLog(@"%@",str3);

方式三:通過顛倒前后字符的位置(亂序)

    NSString * lastStr = [str substringFromIndex:4];
    NSString * firstStr = [str substringToIndex:4];
    NSString * str4 = [lastStr stringByAppendingString:firstStr];
    NSString * str5 = [str4 md5String];
    NSLog(@"%@",str5);

方式四:消息摘要認證 HAMC-MD5

    //key 是一個秘鑰(服務器發送過來的隨機數)
    NSString * key = @"love";
    NSString * str6 = [str hmacMD5StringWithKey:key];
    NSLog(@"%@",str6);
  • MD5加密的安全等級
 加密方式           用戶的輸入   發送給服務器的數據(攔截)                               安全風險
 MD5                handsome     21bfcc4c2625469d8ec6f3d710dcb0fe                  低
 MD5_MD5            handsome     SEEFRSFSTSTSTSTSTSTSTSTSTSTSTSTS                  低
 (字符串+salt)_MD5   handsome     6e3a6f5e426e7876215463e0277de4b7     ->handsomeabc   高
 ...                123456    df10ef8509dc176d733d59549e7dbfaf     ->123456abc
 (字符串+亂序)_MD5    handsome     c1e8a4de626d2dd197cbfea2a3171250     ->somehand      很高
                     12345      erwrwrwrtwrdwdwdwdwdwdwdwdwdwdq     ->45123
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,119評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,382評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,038評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,853評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,616評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,112評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,192評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,355評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,869評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,727評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,928評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,467評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,165評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,570評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,813評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,585評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,892評論 2 372

推薦閱讀更多精彩內容