本文簡單總結幾種經常使用的安全算法
- 摘要算法
- 對稱加密算法
- 非對稱加密算法
- 數字簽名
- 數字證書
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驗證後在數字證書提取,得到公鑰。
我以爲分享是一種精神,分享是個人樂趣所在,不是說我以爲我講得必定是對的,我講得可能不少是不對的,可是我但願我講的東西是我人生的體驗和思考,是給不少人反思,也許給你一秒鐘、半秒鐘,哪怕說一句話有點道理,引起本身心裏的感觸,這就是我最大的價值。(這是我喜歡的一句話,也是我寫博客的初衷)
posted @
2017-07-18 12:21 jiajun_geek 閱讀(236) 評論(0) 編輯 收藏