經常使用加密算法

下面的內容是在網上看到的博客中摘取的部分。html

原做者:算法

(colife,https://www.cnblogs.com/colife/p/5566789.html)後端

(麥田裏的守望者-Rye,https://blog.csdn.net/wangjiang_qianmo/article/details/88073848 )安全

 

常見的加密算法能夠分紅三類,對稱加密算法,非對稱加密算法和Hash算法。數據結構

對稱加密

指加密和解密使用相同密鑰的加密算法。加密

對稱加密算法的安全性取決於加密密鑰的保存狀況。.net

優勢:加解密的高速度和使用長密鑰時的難破解性。htm

缺點:密匙分發困難blog

常見的對稱加密算法:DES、3DES、DESX、Blowfish、IDEA、RC四、RC五、RC6和AESip

非對稱加密

指加密和解密使用不一樣密鑰的加密算法,也稱爲公私鑰加密,私匙解密公匙解密。

優勢:因爲公鑰是能夠公開的,用戶只要保管好本身的私鑰便可,所以加密密鑰的分發將變得十分簡單。

缺點:解密速度遠小於對稱加密,極端狀況下可能比非對稱加密慢一千倍。

常見的非對稱加密算法:RSA、ECC(移動設備用)、Diffie-Hellman、El Gamal、DSA(數字簽名用)

Hash算法

    Hash算法特別的地方在於它是一種單向算法,用戶能夠經過Hash算法對目標信息生成一段特定長度的惟一的Hash值,卻不能經過這個Hash值從新得到目標信息。所以Hash算法經常使用在不可還原的密碼存儲、信息完整性校驗等。

常見的Hash算法:MD二、MD四、MD五、HAVAL、SHA、SHA-一、HMAC、HMAC-MD五、HMAC-SHA1

部分算法介紹:

 HMAC

是密鑰相關的哈希運算消息認證碼,HMAC運算利用哈希算法,以一個密鑰和一個消息爲輸入,生成一個消息摘要做爲輸出。

如何破解哈希加密

字典攻擊和暴力攻擊

簡單的講就是去猜,猜一個密碼用哈希加密一下去試。

查表法

查表法對於破解一系列算法相同的哈希值有着無與倫比的效率。主要的思想就是預計算密碼字典中的每一個密碼,而後把哈希值和對應的密碼儲存到一個用於快速查詢的數據結構中。一個良好的查表實現能夠每秒進行數百次哈希查詢,即便表中儲存了幾十億個哈希值。

彩虹表

彩虹表是一種在時間和空間的消耗上找尋平衡的破解技術。它和查表法很相似,可是爲了使查詢表佔用的空間更小而犧牲了破解速度。由於它更小,因而咱們能夠在必定的空間內存儲更多的哈希值,從而使攻擊更加有效。可以破解任何8位及如下長度MD5值的彩虹表已經出現了。

一種讓查表法和彩虹表都失去做用的技術,叫作加鹽。

查表法和彩虹表只有在全部密碼都以相同方式進行哈希加密時纔有效。若是兩個用戶密碼相同,那麼他們密碼的哈希值也是相同的。咱們能夠經過「隨機化」哈希來阻止這類攻擊,因而當相同的密碼被哈希兩次以後,獲得的值就不相同了。

 

下面是對客戶端與服務端通訊數據加密比較通用的方案:

  1. 客戶端生成AES密鑰,並保存AES密鑰
  2. 客戶端用AES密鑰對請求傳輸數據進行加密
  3. 客戶端使用RSA公鑰對AES密鑰加密,而後把值放到自定義的一個請求頭中
  4. 客戶端向服務端發起請求
  5. 服務端拿到自定義的請求頭值,而後使用RSA私鑰解密,拿到AES密鑰
  6. 服務端使用AES密鑰對請求數據解密
  7. 服務端對響應數據使用AES密鑰加密
  8. 服務端向客戶端發出響應
  9. 客戶端拿到服務端加密數據,並使用以前保存的AES密鑰解密

用戶密碼儲存:
密碼通常在客戶端經過Hash算法加密後,傳到後端再進行存儲。

 

 

JavaScript 中的加密算法

js加密算法下載

Python中的加密算法

相關文章
相關標籤/搜索