常用的加密算法及相关术语简介
一、 HASH(哈希/散列)
HASH一般翻译为哈希或散列,是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。
1.1 基本概念
-
输入数据称为关键字(key), 输出数据称为值(value), 计算方法称为哈希函数(function),计算公式如下:f(key) = value
-
对不同的关键字可能得到同一散列地址,即key1≠key2,而f(key1)=f(key2),这种现象称为碰撞。
-
具有相同函数值的关键字对该散列函数来说称做同义词。
-
对于关键字集合中的任一个关键字,经散列函数映射到地址集合中任何一个地址的概率是相等的,则称此类散列函数为均匀散列函数。
1.2 应用场景
- 用于信息安全方面,如文件校验、数字签名、鉴权协议等
- 散列表是散列函数的重要应用,使用散列表能够快速的按照关键字查找数据记录
二、MD5
MD5 (Message Digest Algorithm 5), MD5生成128位(16字节)的哈希值,广泛用于早期的校验和验证.该算法存在碰撞漏洞,可以被破解,对于安全性要求高的应用场景,建议使用其它算法,如SHA-2系列算法。
2.1 应用场景
- 文件完整性校验
- 低安全等级的密码存储与校验
三、SHA
SHA是安全散列算法(Secure Hash Algorithm,缩写为SHA),能对一个输入信息计算出一个固定长度的字符串,这个固定的字符串称为消息摘要。
3.1 特点
- 单向性:SHA算法只能从数据生成哈希值,但不能从哈希值恢复原始数据,这个特性适合用于数据完整性校验。
- 抗碰撞性:SHA算法的设计在理论上可以保证碰撞的概率非常低。
- 安全性:高版本的SHA算法如SHA-2或SHA-3版本,提供了更高的安全性。
SHA包含5个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384和SHA-512,后四个算法统称为SHA-2,最新的还有SHA-3版本。其中SHA-1安全性低,逐渐被淘汰,常用的是SHA-256算法。
3.2 SHA系列算法
SHA-1:
SHA-1(Secure Hash Algorithm 1)是一个较早的加密哈希函数,它生成160位(20字节)的哈希值, 计算速度较快,适用于低性能设备。但存在碰撞漏洞(攻击者能够找到两个不同的输入产生相同的哈希值), 已经被淘汰。
SHA-224:
SHA-224属于SHA-2(Secure Hash Algorithm)家族,生成224位(28字节)的哈希值。
SHA-256:
SHA-256属于SHA-2(Secure Hash Algorithm 2)家族,生成256位(32字节)的哈希值,是最常用的哈希算法之一,广泛应用于区块链、数字签名和各种安全协议中。
SHA-512:
SHA-512也是SHA-2家族的一部分,生成512位(64字节)的哈希值。与SHA-256相似,输出更长、安全性更高。
四、SSL与TLS
SSL(Secure Sockets Layer)和TLS(Transport Layer Security)都是用于加密网络通信的安全协议。
说明:
- TLS是SSL的继承者
- SSL 2.0/3.0存在严重安全漏洞,已经被淘汰禁用
- TLS 1.2和TLS 1.3是当前推荐的安全版本
五、DES与AES
5.1 DES(Data Encryption Standard)
DES是一种对称加密算法,其密钥长度为56位。DES在早期被广泛使用,但56位密钥长度较短,容易受到暴力破解,不安全。
5.2 AES(Advanced Encryption Standard)
AES是一种对称加密算法,具有更高的安全性。AES的密钥长度可以选择128位、192位或256位,提供了更高的灵活性。AES由于其强大的安全性和较高的计算效率,已成为现代加密标准,广泛应用于各种安全需求较高的场合。
5.1 说明
- AES具有高安全性和灵活性,广泛应用于高安全性的场景,如银行交易、网络通信等
六、Base64
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。
七、RSA
RSA算法是一种非对称加密算法,与对称加密算法不同的是,RSA算法有两个不同的密钥,一个是公钥,一个是私钥。
加密算法类型
-
对称加密算法:使用相同的密钥进行加密和解密。常见的对称加密算法包括AES、DES等。通常用于保护传输中的数据,如SSL/TLS协议中的加密。
-
非对称加密算法:这类算法使用一对密钥:公钥和私钥。公钥用于加密数据,而私钥用于解密数据。常见的非对称加密算法包括RSA、ECC(椭圆曲线密码学)和DSA(数字签名算法)。非对称加密算法常用于数字签名、密钥交换和加密较小的数据块。
-
哈希算法:哈希算法是一种单向函数,它可以将任意长度的数据转换为固定长度的哈希值。常见的哈希算法包括SHA-256(安全哈希算法-256位)和MD5。常用于数据完整性验证和密码存储。