當前位置:
首頁 > 最新 > 常用安全演算法

常用安全演算法

安全傳輸除了可以使用https,還可通過安全演算法實現。常用的安全演算法主要包括數字摘要、對稱加密演算法、非對稱加密演算法、信息編碼等。

本文介紹常用的安全演算法主要包括摘要演算法、對稱加密演算法、非對稱加密演算法、信息編碼、數字簽名、數字證書等,介紹各自演算法的使用場景和使用方法。


數字摘要

實現

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

特點

無論明文多長,計算出來的摘要長度總是固定的。hash(『a』)和hash(『aaaaaaaaaaa』)形成的摘要長度是一樣的

一般明文不同,計算出來的摘要也不同。也就是相同的明文,計算出來的摘要是一樣的,不同的明文形成的摘要一般是不一樣(好的hash函數不會發生碰撞)

只能進行正向的消息摘要。也就是說從消息摘要中不能恢復成原來的明文。

數字摘要演算法

md5

sha

md5

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

字元串:jiajun

md5摘要:a51c0678c060ae4c4630d930fe83102c

SHA-1

將待加密串進行SHA計算後形成160比特位(40位16進位)的摘要。

對比md5,摘要信息更長,運算過程更複雜,速度更慢,但相對也更加安全。

字元串:jiajun

彩虹表破解hash演算法

上面提到的兩種數字摘要演算法md5和sha-1都是不可逆演算法,那麼如何破解呢?彩虹表是一種破解的方式。

明文 hash演算法 密文

xxx md5 xxx

xxx sha-1 xxx

彩虹表破解法通過這樣的一張表進行查詢,比如攻擊者拿到了一個用戶密碼密文,是通過md5演算法加密的,那麼他可以在這樣的一張表進行查詢,從而查到密碼的明文。

彩虹表是不斷的積累的過程,表的內容不斷豐富,從而破解的機率慢慢提高。

如果用戶的密碼是常見的密碼,比如說生日,攻擊者知道有些用戶會用生日作為密碼,那麼攻擊者可以提前將這些生日組合進行計算,提前記錄在表裡面。那麼在彩虹表查詢很快可以查詢的到密碼明文。而如果密碼較為複雜,如果泄露了密文,根據生成的密文在彩虹表進行查詢,是很難查到的(因為表裡面並沒有)。這也就是為什麼我們為用加鹽的方法降低破解率的原因了。


信息編碼

base64編碼

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

將二進位數據編碼成ascll碼。比如說我們將圖片以json的形式上傳到伺服器,那麼可以將圖片二進位數據通過base64編碼轉化為二進位(html img可以直接展示base64編碼圖片)。

base64是可逆的,通過解碼演算法可以恢復成二進位數據,所以根本不能加密。

16進位編碼

將字元串內容轉化為16進位數據編碼


對稱加密

實現

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

特點

演算法是公開的,加密速度快。

一旦泄露密鑰,因為演算法是公開的,所以可以輕鬆解密。

應用分析

A向B發送秘密文件,這個時候可以採用對稱加密演算法,沒有密鑰者不能解密文件。

如果密鑰泄露那麼文件可以被解密,而且隨著技術的發展,如果採用窮舉暴力解密也是有可能。

如果A向很多人發送秘密文件,那麼需要多次約定。

對稱加密演算法

DES演算法,密鑰64位

DES演算法屬於對稱加密演算法,明文按64位進行分組,密鑰長64位,但事實上只有56位參與DES

運算(第8、 16、 24、 32、 40、 48、 56、 64位是校驗位,使得每個密鑰都有奇數個1),分組後的明文和56位的密鑰按位替代或交換的方法形成密文。由於計算機運算能力的增強,原版DES密碼的密鑰長度變得容易被暴力破解,因此演變出了3DES演算法。 3DES是DES向AES過渡的加密演算法,它使用3條56位的密鑰對數據進行三次加密,是DES的一個更安全的變形

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發送的。


數字證書

網路用戶的數字證書由數字證書認證機構(CA)進行頒發。

實現

A給B發送消息,A生成公鑰和私鑰。

A將公鑰,還有公鑰持有者,簽名演算法,過期時間等信息發送給CA(數字證書認證機構)

CA認可信息之後,通過CA的私鑰進行簽名,這時候數字證書就產生了。

接著A將明文,明文數字簽名,和數字證書一起發送給B

B接受到後,通過CA的公鑰進行解密,進行第一次校驗,校驗數字證書。

驗證成功後,進行第二次檢驗,提取數字證書中的公鑰,對密文進行解密。

應用分析

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

證書管理

keytool,openssl是常用的證書管理工具。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 猿來在痴 的精彩文章:

TAG:猿來在痴 |