浅析加密算法

导读:本篇文章讲解 浅析加密算法,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

单向加密算法

MD5

SHA 

HMAC

对称加密算法

DES

AES

PBE

非对称加密算法

RSA

DH


单向加密算法

What:一段明文,通过该加密算法以一种不可逆的方式将它转换为一段密文;该算法只能够将明文加密成密文,不能够通过密文解密回原来的明文。

Examples: MD5、SHA、HMAC

MD5

What:MD5 (Message Digest Algorithm 5,信息摘要算法),一种被广泛使用的密码散列函数,用以提供消息的完整性保护以及散列数据的功能。

How:MD5 能够将无论多长的数据最后都编码成 128bit 信息摘要,且对同样的数据的最后的加密结果会一直保持一致。

Application:文件校验、密码加密、散列数据。

Others:彩虹表(https://www.cmd5.com/)能够在一定程度上使用碰撞对密文进行解密,从而得到明文。针对这种情况,实际应用中会使用合适的 salt 进行加密,如此,密文被破解的概率大大降低。

SHA 

What:SHA (Secure Hash Algorithm,安全散列算法),能将数字消息加密成长度固定的字符串(又称消息摘要)的算法。

How:SHA-1 和 SHA-2 是该算法不同的两个版本,它们的构造签名的长度有所不一样,可以把 SHA-2 理解为 SHA-1 的继承者,其中最受欢迎的是 SHA-256。

算法类型 消息摘要(bit)

SHA-1

160

SHA-224

224

SHA-256

256
SHA-384 384
SHA-512 512

MD5 和SHA1 的区别:

加密速度:MD5 结果是 128bit 摘要,SHA1 是160bit 摘要,MD5 的加密速度更快。

密码安全:由于 SHA1 加密之后的摘要更长,所以出现哈希的碰撞概率越小,因此越安全。

128bit、160bit 都是二进制,转换成十六进制需要除以 4。

HMAC

What:HMAC (Hash Message Authentication Code,散列消息鉴别码),基于密钥的 Hash 算法的认证协议。

How:认证原理是,客户端使用一个共享密钥通过摘要算法(MD5、SHA)得到小数据块(MAC),并将其加入到消息中,然后传输,服务端利用与客户端共享的密钥进行鉴别认证。

Application:算法常用于对 API 参数进行请求验证,服务端分配给客户端一个密钥,客户端使用密钥和接口的相关信息散列计算(MD5、SHA)出请求签名,然后将签名连同数据一起发给服务端,

服务端根据客户端标识,使用其密钥和同样的散列算法计算出签名和传来的签名做对比,以验证请求的合法性。

浅析加密算法

对称加密算法

What:对称加密算法又被称为单密钥加密,是采用单钥密码系统的加密方法,一个密钥既可以加密,也可以解密。

Examples:DES、AES、PBE

DES

DES(Data Encryption Standard,数据加密标准)是一个分组加密算法,使用 64bit 的密钥将 64bit 的明文经过 16 轮替换和移位操作变成 64bit 的密文。

1. 密钥长度是其实是 56位(因为每个第 8 位都用作奇偶校验)

2. 加密数据分组长度是 64bit,所以数据一般需要经过 Base 64 加密之后再进行 DES 加密

AES

AES (Advanced Encryption Standard,高级加密算法),AES 是 DES 的升级版,相比 DES,AES 具有以下特点:

1. 支持可变长分组长度,分组长度可设定为 32bit 的任意倍数,最小值为 128bit,最大值为 256bit。

2. 密钥长度可设定为 32bit 的任意倍数,范围为 128bit-256bit。

3. 运算速度快

4. 对内存的需求非常低

浅析加密算法

PBE

PBE (Password-Based Encryption,基于密码解密)是一种简便的加密方式。密钥由用户自己掌握,不借助任何物理媒体,采用 salt 多重加密等方法来保证数据的安全性。

非对称加密算法

What:非对称加密需要两个密钥,一个是公开的,称为公钥,另一个是私有的,称为私钥。公钥用来加密数据,只有私钥才能解密;私钥一般用来签名,公钥用来验证签名。

非对称加密算法安全性要比对称加密算法高很多,但是其运算消耗资源多、效率慢,因此很多情况下都是结合对称加密一起使用的。

Examples:RSA、DH

RSA

What:RSA,是以算法发明者的名字命名的,其安全性依赖于大数分解的困难程度,主要用于认证和数据加解密,也可以用于密钥交换。

How:一般流程如下:

1. A 构建一对密钥,将公钥发布给 B,将私钥保留。

2. A 使用私钥加密数据并签名,发送给 B。

3. B 使用 A 的公钥、签名来验证收到的密文是否有效,有效则使用 A 的公钥对数据解密。

4. B 使用 A 的公钥对数据加密,发送给 A,A 使用自己的私钥解密数据。

浅析加密算法

数字签名:简单来说,就是私钥加密、公钥解密的一个过程,包含签名过程、验证过程。

用私钥加密,这就是个签名过程;用公钥解密,就是个验证过程。

DH

What:DH(Diffie-Hellman,密钥交换协议)其主要用来密钥交换,一般不用来做认证和加解密数据。

How:一般流程如下:

1. A 构建一对密钥,将公钥发布给 B,私钥保留。

2. B 通过 A 的公钥构建密钥对,将公钥发布给 A,私钥保留。

3. AB 双方互通本地密钥算法

4. AB 双方公开自己的公钥,使用对方的公钥和刚才产生的私钥加密数据,同时可以使用对方的公钥和自己的私钥对数据解密。

相比 RSA,DH 要多发送一个 DH 公钥,并且其最终对数据的加解密依赖于本地对称加密算法。

参考文章:Java工程师修炼之道

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/9623.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!