總結幾種經常使用的安全算法

本文簡單總結幾種經常使用的安全算法

  • 摘要算法
  • 對稱加密算法
  • 非對稱加密算法
  • 數字簽名
  • 數字證書

web安全系列目錄

數字摘要

實現

  • 將任意長度的明文經過單向hash函數摘要成固定長度的串。 Hash(明文)-->固定長度的摘要

特色

  • 不管明文多長,計算出來的摘要長度老是固定的。hash(‘a’)和hash(‘aaaaaaaaaaa’)造成的摘要長度是同樣的
  • 通常明文不一樣,計算出來的摘要也不一樣。也就是相同的明文,計算出來的摘要是同樣的,不一樣的明文造成的摘要通常是不同(好的hash函數不會發生碰撞)
  • 只能進行正向的消息摘要。也就是說從消息摘要中不能恢復成原來的明文。

數字摘要算法

  • md5
  • sha

md5

  • 將待加密串進行md5計算造成128比特位(32位16進制)的摘要。css

    字符串:jiajun
    md5摘要:a51c0678c060ae4c4630d930fe83102c

SHA-1

  • 將待加密串進行SHA計算後造成160比特位(40位16進制)的摘要。
  • 對比md5,摘要信息更長,運算過程更復雜,速度更慢,但相對也更加安全。html

    字符串:jiajun SHA-1摘要:26352d75496932fd05e65724610ce1aaadf9259c

base64不是一種加密算法而是一種編碼算法

  • 將二進制數據編碼成ascll碼。好比說咱們將圖片以json的形式上傳到服務器,那麼能夠將圖片二進制數據經過base64編碼轉化爲二進制。
  • base64是可逆的,經過解碼算法能夠恢復成二進制數據,因此根本不能加密。

彩虹表破解hash算法

  • 上面提到的兩種數字摘要算法md5和sha-1都是不可逆算法,那麼如何破解呢?彩虹表是一種破解的方式。
明文 hash算法 密文
xxx md5 xxx
xxx sha-1 xxx
  • 彩虹表破解法經過這樣的一張表進行查詢,好比攻擊者拿到了一個用戶密碼密文,是經過md5算法加密的,那麼他能夠在這樣的一張表進行查詢,從而查到密碼的明文。
  • 彩虹表是不斷的積累的過程,表的內容不斷豐富,從而破解的機率慢慢提升。
  • 若是用戶的密碼是常見的密碼,好比說生日,攻擊者知道有些用戶會用生日做爲密碼,那麼攻擊者能夠提早將這些生日組合進行計算,提早記錄在表裏面。那麼在彩虹表查詢很快能夠查詢的到密碼明文。而若是密碼較爲複雜,若是泄露了密文,根據生成的密文在彩虹表進行查詢,是很難查到的(由於表裏面並無)。這也就是爲何咱們爲用加鹽的方法下降破解率的緣由了。

對稱加密

實現

  • 發送方和接收方約定一個密鑰,生成加密密文發送。接收方接受後,使用相同的密鑰和加密算法的逆算法進行解密。通俗將,我給小花寫一封情書,而後放在一個上鎖的小箱子,通過多人的,最後到達小花,小花經過相同的鑰匙打開箱子。可是若是鑰匙中途被人撿到,那麼情書就公開了。所謂對稱指的是加密解密用同一個加密密鑰。

特色

  • 算法是公開的,加密速度快。
  • 一旦泄露密鑰,由於算法是公開的,因此能夠輕鬆解密。

應用分析

  • A向B發送祕密文件,這個時候能夠採用對稱加密算法,沒有密鑰者不能解密文件。
  • 若是密鑰泄露那麼文件能夠被解密,並且隨着技術的發展,若是採用窮舉暴力解密也是有可能。
  • 若是A向不少人發送祕密文件,那麼須要屢次約定。

對稱加密算法

  • DES算法,密鑰64位
  • AES算法,,密鑰長度之處128,192,256三種,加密強度更高。

非對稱加密

實現

  • A向B發送消息,B先產生一個公鑰和私鑰,而後將公鑰公開,A得到公鑰。
  • 而後用公鑰進行加密,而後將密文發送給B。
  • B獲得後用私鑰進行解密。

特色

  • 非對稱加密更加複雜,因此加密解密速度沒有對稱加密快,可是也更加安全。

非對稱加密算法

  • RSA算法

應用分析

  • 即便中途有人截獲文件,由於沒有私鑰,而且加密算法複雜,解密是很困難的。
  • 若是A向多人發送祕密文件,那麼他不須要屢次約定的過程,從公鑰庫根據接收方的公鑰分別進行加密就行。

數字簽名

實現

  • A給B發送信息,A生成公鑰和私鑰,將公鑰公開。
  • A對發送消息進行數字摘要算法,而後再經過私鑰進行加密。
  • A將加密後的密文和原文發送給B
  • B收到後,對密文用公鑰進行解密,得到串C,再用原文進行摘要算法,得到串D,而後對比C D。這樣就能確認A的身份。
  • 數字簽名:將明文進行摘要,而後再經過私鑰進行加密的結果

數字簽名算法

  • MD5withRSA算法
  • SHA1withRSA算法

應用分析

  • B收到A的文件,B想確認是A發送的,那麼能夠根據數字簽名方式,根據A的公鑰進行解密而後比較,由於A的私鑰是不公開的,這樣匹配成功就能確認是A發送的。

數字證書

實現

  • A給B發送消息,A生成公鑰和私鑰。
  • A將公鑰,還有公鑰持有者,簽名算法,過時時間等信息發送給CA(數字證書認證機構)
  • CA承認信息以後,經過CA的私鑰進行簽名,這時候數字證書就產生了。
  • 接着A將明文,明文數字簽名,和數字證書一塊兒發送給B
  • B接受到後,經過CA的公鑰進行解密,進行第一次校驗,校驗數字證書。
  • 驗證成功後,進行第二次檢驗,提取數字證書中的公鑰,對密文進行解密。

應用分析

  • 在數字簽名的基礎上,再發送一個數字證書,這樣的話接收方不須要維護一個公鑰庫,經過CA驗證後在數字證書提取,得到公鑰。

我以爲分享是一種精神,分享是個人樂趣所在,不是說我以爲我講得必定是對的,我講得可能不少是不對的,可是我但願我講的東西是我人生的體驗和思考,是給不少人反思,也許給你一秒鐘、半秒鐘,哪怕說一句話有點道理,引起本身心裏的感觸,這就是我最大的價值。(這是我喜歡的一句話,也是我寫博客的初衷)

 
 
標籤:  web基礎
好文要頂  關注我  收藏該文   
5
 
 
 
« 上一篇: java多線程系列(二)---對象變量併發訪問
posted @  2017-07-18 12:21 jiajun_geek 閱讀(236) 評論(0) 編輯 收藏
相關文章
相關標籤/搜索