天天看點

千萬别再用了,這些加密算法🍓一、消息摘要算法🍓二、對稱加密算法🍓三、非對稱加密算法🍓四、不安全的加密算法🍓五、總結

🎈 作者:Linux猿

🎈 簡介:CSDN部落格專家🏆,華為雲享專家🏆,Linux、C/C++、面試、刷題、算法盡管咨詢我,關注我,有問題私聊!

🎈 關注專欄:Linux 技術 (優質好文持續更新中……)🚀

🎈 歡迎小夥伴們點贊👍、收藏⭐、留言💬

目錄

🍓一、消息摘要算法

✨1.1 特性

✨1.2 線上計算摘要

🍓二、對稱加密算法

✨2.1 特性

✨2.2 線上加解密

🍓三、非對稱加密算法

✨2.2 特性

✨2.3 線上加解密

🍓四、不安全的加密算法

✨4.1 DES

✨4.2 3DES

✨4.3 md2、md4、md5

🍓五、總結

通常意義上,加密算法可以分為三大種類:消息摘要算法、對稱加密算法和非對稱加密算法。下面先來看一下這三種加密算法。

🍓一、消息摘要算法

消息摘要算法是将一段資訊經過加密後産生一段固定長度的字元串,比如:128 位、256位長度。

千萬别再用了,這些加密算法🍓一、消息摘要算法🍓二、對稱加密算法🍓三、非對稱加密算法🍓四、不安全的加密算法🍓五、總結

圖1 消息摘要算法加密過程

✨1.1 特性

(1)相同資訊加密後産生的字元串相同;

(2)具有不可逆性,不能從加密後的字元串推到出原消息;

(3)可以用于數字簽名;

✨1.2 線上計算摘要

下面直接來看一個例子,如下所示:

千萬别再用了,這些加密算法🍓一、消息摘要算法🍓二、對稱加密算法🍓三、非對稱加密算法🍓四、不安全的加密算法🍓五、總結

圖2 線上計算摘要

上圖中,使用 MD5 算法對 "CSDN Linux猿" 進行了加密,可以看到,哈希值為:48e93a303a9454a94697e1f86056f54a,這個哈希值具有唯一性。

🔶🔶🔶🔶🔶 我是華麗的分割線 🔶🔶🔶🔶🔶

🍓二、對稱加密算法

對稱加密算法是指加密秘鑰和解密秘鑰都是同一個秘鑰的加密算法。

千萬别再用了,這些加密算法🍓一、消息摘要算法🍓二、對稱加密算法🍓三、非對稱加密算法🍓四、不安全的加密算法🍓五、總結

圖3 對稱加密算法原理

✨2.1 特性

(1)隻有一個密鑰,既用于加密,也用于解密;

(2)加/解密速度較快;

✨2.2 線上加解密

下面直接來看一個例子,如下所示:

千萬别再用了,這些加密算法🍓一、消息摘要算法🍓二、對稱加密算法🍓三、非對稱加密算法🍓四、不安全的加密算法🍓五、總結

圖4 線上對稱加解密過程

 在上圖中,對明文 “CSDN Linux猿” 使用密鑰“Linux”,加密算法 AES 進行了加密。在解密過程中,使用同樣的密鑰“Linux”進行了解密,得到了原來的明文,這就是對稱加密算法加解密原理。

🔶🔶🔶🔶🔶 我是華麗的分割線 🔶🔶🔶🔶🔶

🍓三、非對稱加密算法

非對稱加密算法是指加密秘鑰和解密秘鑰不是同一個秘鑰的加密算法。

千萬别再用了,這些加密算法🍓一、消息摘要算法🍓二、對稱加密算法🍓三、非對稱加密算法🍓四、不安全的加密算法🍓五、總結

圖5 非對稱加密算法

✨2.2 特性

(1)有兩個秘鑰,公鑰用于解密,私鑰用于加密,私鑰一般不公開;

(2)資訊經過公鑰加密後,私鑰能夠解密,擷取原消息;

(3)加/解密速度較慢;

✨2.3 線上加解密

下面直接來看一個例子,如下所示:

首先,需要生成公鑰和私鑰,分别用于加密和解密,公鑰如下所示:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1ZNOaC++tCgxjKRK/k84
+h7klSMgrLi4efoZ+ib5ASKdvXVCpc/Nah/smTJcjztOjgWp4cesVWuqH92m0zlq
PySFcMSDN3/RydBuUbQjisOqmQrY+4VEs0R+eVs2BuPJkfDnqP+LKk7Act56NqkO
X9KoY4OV3Mqa8t2Os7vRBy+E2SdJeAvFEANVrv8FipXk8omxdNiixho4A7tKLEdM
uI9BMTPGsz97S9OGwTli6XNjjU5mkMChr6G6XbRvewWh7W8K7JboDoqLn5xVWyp4
D1HwhKipE0B1+nl84p1tS6evhybJflBIYtCU01skMWm2+4/r2IHUwjDLQ7CnYP6J
cQIDAQAB
-----END PUBLIC KEY-----
           

私鑰如下所示: 

-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDVk05oL760KDGM
pEr+Tzj6HuSVIyCsuLh5+hn6JvkBIp29dUKlz81qH+yZMlyPO06OBanhx6xVa6of
3abTOWo/JIVwxIM3f9HJ0G5RtCOKw6qZCtj7hUSzRH55WzYG48mR8Oeo/4sqTsBy
3no2qQ5f0qhjg5Xcypry3Y6zu9EHL4TZJ0l4C8UQA1Wu/wWKleTyibF02KLGGjgD
u0osR0y4j0ExM8azP3tL04bBOWLpc2ONTmaQwKGvobpdtG97BaHtbwrslugOiouf
nFVbKngPUfCEqKkTQHX6eXzinW1Lp6+HJsl+UEhi0JTTWyQxabb7j+vYgdTCMMtD
sKdg/olxAgMBAAECggEAHJLYqpe4q+G0v1w7rEptFQmNC2bnuDP+elM7pnwQVFaN
RAusHwLuOISM4vIZ8A+/MsEPOWW9aLA+0oSVDS1hSZFZSP0BkStIpfd8yvGOz8Hd
0Rvia8QorNM9GH9bexB+p0fTtoh51e8zUCrzrtxvT+KfJLE2G5P/pv59WQ6HqK40
J60x8XVJg1lngDO518LL1EIFR3/UNkyN3F1inw2CDwBAfvxSR4wTxYkGSQBbRzrK
NROfXkYKpvWJfdG0UM7c1MZPNpUsN8izkxRUN2viNvWW3JCJvI+UFjld7PPyxxwM
5mQ7MM+/e1ozhmUvUJ1FgfqVgs7cDRAS6onn+R7xAQKBgQD41PbKDbIU/W1AIC0q
0p+ERNFtFCUJ1naI4jr8v1vFxCrJ6P3kDBWzYPArG6XBcuAHqDPhw0ExDTTOw1rQ
+PNgDNN6VUMp6mujuYNucYlqsMtl0IYPpBWjqNWToNKi/zeFThFIdOOwVkWUReN3
+7qsHrIFRqR7H/kkvNc+JQcbZwKBgQDbulb9lg04skR7lX/PK+ogeP6HXq8NFA4S
11zUEdJEuIeEYnbIYSNgoSvjh3wl6ckKJaJUoW1tc7RhsdkW9dUhEgjDImkmZ7bd
vqAp1vCncmKidzBuEt247Fek3jvZZEwTunPSpDMgIjdqHKEVJl4L0acGaY/WA/cv
F8JyfSqFZwKBgERy8OBsHAzCGgeF0mbxQYg1FhcXb4jhQgItmWRlj207pTmdqhnN
aTrK88Yn+NTaMN5qWrtD5u8DXv9xpc3ObcSCQrpoMe2Z2rpTEeCTwuVidNExJ2+u
B3XZv8a4erjz0+YLr51q6idb1BARmZ0r1hH676Wb5SsphHOiruMddHMJAoGBANEM
qFb7u/iFIsKxqbfhgA8FDqScYM+AlSM34wmhKvxW1BgP1hMu2AnHTYpcDLHFi5Ar
3hXGv+Wyf5uzKWe+29dq4QtGYeQ4KLMv+hHUfYHSQiVwYJNZP7oAoiIpjad21Sqv
6iIuNrYL180ND/SfXDrCbLadGEv12ebkJAvpKdthAoGAMROodRdek5W85EyK70WT
WKBLb4X1+KRqjqmNCnv7LYJe4IMiX+hQ8t5yBgQbGtnD/s7KR9nkrfdPqnY1zoLC
6Fg8A0ngNTWQAMjAjkGTWbwF5dfnJrYNthmAJtjbdvYEejYTQrfe+o8sgVehFJFk
rAfPXxAuzK+o4m5vSivrAnY=
-----END PRIVATE KEY-----
           

 使用公鑰對 “CSDN Linux猿”,加密算法 RSA 進行加密,如下所示:

千萬别再用了,這些加密算法🍓一、消息摘要算法🍓二、對稱加密算法🍓三、非對稱加密算法🍓四、不安全的加密算法🍓五、總結

 使用私鑰對加密後的資料進行解密,如下所示:

千萬别再用了,這些加密算法🍓一、消息摘要算法🍓二、對稱加密算法🍓三、非對稱加密算法🍓四、不安全的加密算法🍓五、總結

上圖中,将密文解密為 “CSDN Linux猿”。

🔶🔶🔶🔶🔶 我是華麗的分割線 🔶🔶🔶🔶🔶

🍓四、不安全的加密算法

下面就來看一下哪些加密算法不建議再使用了。

✨4.1 DES

DES 是資料加密标準(Data Encryption Standard)的縮寫,是一種對稱密鑰加密算法。

1976年美國聯邦政府将其确定為國家标準。但是,在1999年1月,distributed.net 與電子前哨基金會合作,在22小時15分鐘内公開破解了一個 DES 密鑰。

注意:通常說的加密算法被破解,一般是該加密算法有一組或幾組密鑰能在有限的時間内找到解,并不是說加密算法完全不能用了。

✨4.2 3DES

3DES 是三重資料加密算法(Triple Data Encryption Algorithm)的縮寫,是一種對稱加密算法。

從名稱就可以知道,DES 和 3DES 有一定關系,3DES 比 DES 安全強度更高,3DES 是對每個資料塊應用三次 DES,具有三個獨立密鑰。

但是,在 2017 年 3DES 已被 NIST 棄用,自 OpenSSL 1.1.0 版 起,預設不包含 3DES,并将其視為“弱密碼”。

✨4.3 md2、md4、md5

從名稱上來看,md2、md4、md5 顯然是一個系列,MD 是 Message-Digest Algorithm 的簡寫,是一種資訊摘要算法,也稱為雜湊演算法,具有不可逆性。

但是,在 2009年,中國科學院謝濤和馮登國僅用了 2^20.96 的碰撞算法複雜度,破解了 MD5 的碰撞抵抗。2011年,RFC 6151 禁止 MD5 用作密鑰散列消息認證碼。

🔶🔶🔶🔶🔶 我是華麗的分割線 🔶🔶🔶🔶🔶

🍓五、總結

盡量避免過時/不安全/被遺棄的加密算法的使用,後面将會講解推薦使用的加密算法。

⚡參考文獻⚡

[1] 線上RSA加密解密,RSA2加密解密(SHA256WithRSA)-BeJSON.com

[2] 線上加密解密

歡迎關注下方👇👇👇公衆号👇👇👇,擷取更多優質内容🤞(比心)!