千万别再用了,这些加密算法

Posted Linux猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了千万别再用了,这些加密算法相关的知识,希望对你有一定的参考价值。


🎈 作者: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] 在线加密解密

欢迎关注下方👇👇👇公众号👇👇👇,获取更多优质内容🤞(比心)!

以上是关于千万别再用了,这些加密算法的主要内容,如果未能解决你的问题,请参考以下文章

千万别再傻傻地自学编程了,程序员:这都是别人玩剩下的

千万别再傻傻地自学编程了,程序员:这都是别人玩剩下的

千万别再傻傻地自学编程了,程序员:这都是别人玩剩下的

SpringBoot 设置动态定时任务,千万别再写死了~

千万别再学Python了?Python没用了?马上就要被淘汰啦?

千万别再学Python了?Python没用了?马上就要被淘汰啦?