介绍常见的加密和解密方法。
- 加密是利用数学方法将明文转化为密文,从而达到保护数据的目的。
通过加密可保证数据的机密性、完整性、鉴别性。
机密性:通过数据加密实现。只允许特定用户访问和阅读信息。
完整性:通过数字加密、散列、数字签名实现。确保数据在存储和传输过程中不被修改。
鉴别性:通过数字加密、散列、数字签名实现。提供数据和身份识别有关的服务,即认证数据发送者和接收者的服务。
常用的加密当时有三种分别是:
对称加密:指数据加密和解密使用相同的密钥 数据的机密性: DES,AES
非对称加密:也叫公钥加密,指数据加密和解密使用不同的密钥 密钥对儿 身份验证 DSA,RSA
单向加密:指只能加密数据,而不能解密数据 数据的完整性 MD5,SHA系列算法。
DES算法:
介绍:
DES是一个分组加密算法,就是将明文分组进行加密,每次按顺序取明文的一部分。一个典型的DES以64位为分组,加密解密用算法相同。它的密钥长度为56位,因为每组第8位是用来做奇偶校验,密钥可以是任意56位的数,保密性依赖于密钥。
ip置换:
在数学中,对合函数是指函数 f(x) 满足 f(f(x))=x。
DES运算是对合运算,是指解密和加密可以共用同一运算(只是子密钥使用的顺序不同)。
秘钥生成:
参考链接:https://blog.csdn.net/VistorsYan/article/details/115836524
明文加密和解密:
参考链接:
https://blog.csdn.net/bemodesty/article/details/114999946
AES算法:
为什么 DES 被废弃?
密钥长度是56比特,因此算法的理论安全强度是2的56次方。秘钥长度要求太短,安全性不够。
AES 算法支持三种密钥长度:128 比特、192 比特和 256 比特,对于不同长度的密钥,AES 算法采用不同的轮数进行加密。(16字节、24字节和32字节)
参考链接:https://blog.csdn.net/u012581020/article/details/131246733
DSA算法
数字签名算法(DSA - Digital Signature Algorithm)是用于数字签名的算法。
简单来说是私钥签名,公钥验证。
DSA 算法包含了四种操作:密钥生成、密钥分发、签名、验证。
(1) 使用消息摘要算法将发送数据加密生成数字摘要。
(2) 发送方用自己的私钥对摘要再加密,形成数字签名。
(3) 将原文和加密的摘要同时传给对方。
(4) 接受方用发送方的公钥对摘要解密,同时对收到的数据用消息摘要算法产生同一摘要。
(5) 将解密后的摘要和收到的数据在接收方重新加密产生的摘要相互对比,如果两者一致,则说明在传送过程中信息没有破坏和篡改。否则,则说明信息已经失去安全性和保密性。
安全性:
发信者怎么知道从网上获取的公钥就是真的?没有遭受中间人攻击?
这样就需要第三方机构来保证公钥的合法性,这个第三方机构就是 CA (Certificate Authority),证书中心。
CA 用自己的私钥对信息原文所有者发布的公钥和相关信息进行加密,得出的内容就是数字证书。
信息原文的所有者以后发布信息时,除了带上自己的签名,还带上数字证书,就可以保证信息不被篡改了。信息的接收者先用
CA给的公钥解出信息所有者的公钥,这样可以保证信息所有者的公钥是真正的公钥,然后就能通过该公钥证明数字签名是否真实了。
参考链接:
https://blog.csdn.net/u013837825/article/details/123764512
链接:https://blog.csdn.net/weixin_45264425/article/details/127160920
RSA加密
RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密;是由一对密钥来进行加解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有)。
使用:
这里将A理解为客户端,B理解为服务端,A、B分别有一对公钥和私钥。
加解密过程简述
A和B进行通信加密,B要先生成一对RSA密钥,B自己持有私钥,给A公钥 —>A使用B的公钥加密要发送的内容,然后B接收到密文后通过自己的私钥解密内容。
单向加密
原理:
单向散列函数(one-way hash function)是指对不同的输入值,通过单向散列函数进行计算,得到固定长度的输出值。这个输入值称为消息(message),输出值称为散列值(hash value)。
单向散列函数也被称为消息摘要函数(message digest function)、哈希函数或者杂凑函数。输入的消息也称为原像(pre-image)。输出的散列值也称为消息摘要(message digest)或者指纹(fingerprint),相当于该消息的身份证。
单向散列函数有多种实现算法,常见的有:MD5、SHA-1、SHA-2和 SHA-3。MD5 与 SHA-1 算法已被攻破,不应该被用于新的用途;SHA-2 与 SHA-3 还是安全的,可以使用。
无论消息的长度有多少,使用同一算法计算出的散列值长度总是固定的。比如 MD5 算法,无论输入多少,产生的散列值长度总是 128 比特(16字节)。
计算速度快
计算散列值的速度快。尽管消息越长,计算散列值的时间也越长,但也会在短时间内完成。
不可逆。
可以用于计算文件完整性,和密码保存。文章来源:https://uudwc.com/A/W1njN
MD5输出128bit、SHA1输出160bit、SHA256输出256bit
SHA-1是160位的哈希值,而SHA-2是组合值,有不同的位数,其中最受欢迎的是256位。文章来源地址https://uudwc.com/A/W1njN