密码加密算法
针对密码存储的加密算法通常会使用一些特定的哈希函数或密码学技术,以确保用户密码在存储时是安全的。
-
bcrypt:这是一种基于 Blowfish 加密算法的密码哈希函数。它适用于存储密码,因为它的加密强度可以根据需要进行调整,以抵御暴力破解和彩虹表等攻击。
-
scrypt:与bcrypt类似,scrypt 也是一种基于密码哈希的加密算法,但它还增加了内存和CPU要求,使得在专用硬件上进行攻击更加困难。这有助于抵御大规模攻击。
-
Argon2:这是一种被选为密码存储的最新推荐算法。它是 PHC (Password Hashing Competition) 赛事的获胜者,结合了多种技术来抵御多种攻击,包括基于 GPU 和 FPGA 的攻击。
-
PBKDF2:这是一个密钥派生函数,旨在通过多次应用一个伪随机函数(通常是哈希函数)来增加密码哈希的计算时间,从而提高安全性。
数字签名算法
数字签名算法是一种用于验证数字文档或数据的完整性、认证发送者身份以及确保数据不被篡改的密码学技术.
RSA (Rivest-Shamir-Adleman):RSA 是一种基于因数分解的非对称加密算法,可以用于数字签名。发送者使用私钥对消息进行签名,接收者使用公钥验证签名的有效性。
-
DSA (Digital Signature Algorithm):DSA 是一种基于离散对数问题的数字签名算法。它通常用于确保消息的完整性和发送者的身份。
-
ECDSA (Elliptic Curve Digital Signature Algorithm):ECDSA 是一种基于椭圆曲线密码学的数字签名算法。由于使用椭圆曲线可以在相对较短的密钥长度下提供与传统算法相当的安全性,因此它在资源受限的环境中较为流行。
-
EdDSA (Edwards-curve Digital Signature Algorithm):EdDSA 是一系列基于扭曲爱德华曲线密码学的数字签名算法。与 ECDSA 相比,EdDSA 提供更高的性能和安全性。
-
RSASSA-PSS (RSA Signature Scheme with Appendix - Probabilistic Signature Scheme):这是一种增强的 RSA 数字签名方案,提供更好的安全性和抗攻击能力。
-
GOST R 34.10-2012:这是俄罗斯使用的一种数字签名算法,基于 GOST R 34.10-2001 标准的改进版本。
-
HMAC (Hash-based Message Authentication Code):虽然不是传统意义上的数字签名,但HMAC 可用于将哈希函数与密钥结合,生成一个用于验证消息完整性的校验码。
非对称加密算法
-
RSA (Rivest-Shamir-Adleman):RSA 是最早并最广泛使用的非对称加密算法之一。它基于大整数分解问题,使用公钥加密、私钥解密,或者私钥签名、公钥验证签名。
-
DSA (Digital Signature Algorithm):DSA 是一种非对称加密算法,专门用于数字签名和认证。它依赖于离散对数问题,用于验证签名和生成签名。
-
ECDSA (Elliptic Curve Digital Signature Algorithm):与传统非对称算法相比,ECDSA 使用椭圆曲线密码学,能够在相对较短的密钥长度下提供相当的安全性。它在资源受限的环境中较为流行。
-
EdDSA (Edwards-curve Digital Signature Algorithm):EdDSA 是基于扭曲爱德华曲线密码学的一系列非对称加密算法。它提供更高的性能和安全性,逐渐成为一种受欢迎的选择。
-
Diffie-Hellman Key Exchange:虽然不是严格意义上的加密算法,Diffie-Hellman 用于安全地交换密钥。它允许两个用户在公开信道上协商一个共享的秘密密钥,而无需在信道上传输秘密信息。
-
ElGamal:ElGamal 是一种非对称加密算法,基于离散对数问题。它可以用于加密和数字签名。
密钥交换算法
密钥交换算法用于在不安全的通信渠道上协商共享密钥,以便进行后续的加密通信。
RSA (Rivest-Shamir-Adleman):RSA 是最早并最广泛使用的非对称加密算法之一。它基于大整数分解问题,使用公钥加密、私钥解密,或者私钥签名、公钥验证签名。
-
Diffie-Hellman Key Exchange:Diffie-Hellman(DH)是最早的密钥交换协议之一。它允许两个参与者在公开信道上协商一个共享的秘密密钥,而无需将秘密信息传输给对方。
-
Elliptic Curve Diffie-Hellman (ECDH):ECDH 是 Diffie-Hellman 协议的一个变体,使用椭圆曲线密码学。它在相对较短的密钥长度下提供与传统 DH 相当的安全性,从而提高性能。
-
RSA Key Exchange:RSA 也可以用于密钥交换,其中一方使用对方的公钥对一个生成的随机密钥进行加密,然后发送给对方,对方再使用自己的私钥进行解密,从而协商出一个共享密钥。
-
Schnorr Protocol:Schnorr 协议是一种强大且安全的密钥交换协议,基于离散对数问题。它支持秘密密钥协商和数字签名。
-
MQV (Menezes-Qu-Vanstone) Protocol:MQV 是一种扩展 Diffie-Hellman 协议,允许双方同时认证和交换密钥。它可以增加安全性,但也更复杂。
-
SIGMA Protocol:SIGMA 是一类协议,包括多个变体,用于实现安全的密钥交换。它的目标是提供正交性、完整性和前向保密性。
-
J-PAKE (Password Authenticated Key Exchange by Juggling):J-PAKE 允许两个用户使用一个共享的密码在不安全的通信渠道上交换密钥,同时保持保密性和完整性。
-
IKE (Internet Key Exchange):IKE 是在 IPsec 虚拟专用网络 (VPN) 中用于建立安全通信的协议。它使用密钥交换算法来协商密钥,通常支持多种密钥交换方法,包括 Diffie-Hellman 和 ECDH。
对称加密算法
-
AES (Advanced Encryption Standard):AES 是目前最常用的对称加密算法之一,广泛用于保护敏感数据。它支持不同密钥长度(128、192、256位),安全性高且性能优越。
-
DES (Data Encryption Standard):DES 是较早期的对称加密算法,使用56位密钥。由于其较短的密钥长度,现在已不推荐用于安全通信。
-
3DES (Triple DES):3DES 是 DES 的增强版本,通过多次应用 DES 进行加密,提高了安全性。然而,由于其性能较慢,现在通常被更现代的算法取代。
-
Blowfish:Blowfish 是一种可变密钥长度的对称加密算法,适用于多种应用。尽管在一些情况下已经被 AES 取代,但它仍然被广泛使用。
-
RC4 (Rivest Cipher 4):RC4 是一种流密码算法,曾经在许多应用中使用。然而,它已经被发现存在严重的安全弱点,不再被推荐用于安全通信。
-
ChaCha20:ChaCha20 是一种流密码算法,被用作对称加密算法和随机数生成器。它在性能和安全性方面表现出色,被广泛应用于各种应用中。
hash算法
哈希算法(也称为散列算法)是一种将输入数据转换为固定长度的哈希值的算法,通常用于数据的唯一标识、完整性验证和密码存储等。
-
MD5 (Message Digest Algorithm 5):MD5 是一个广泛使用的哈希算法,但它已被发现存在碰撞和弱点,不再被认为是安全的。
-
SHA-1 (Secure Hash Algorithm 1):SHA-1 也是一种较早的哈希算法,类似于 MD5,但在安全性方面也存在问题,已被逐渐弃用。
-
SHA-256/SHA-512:SHA-2 系列包括多个哈希算法,如 SHA-256 和 SHA-512,提供更高的安全性。SHA-256 输出 256 位哈希值,而 SHA-512 输出 512 位哈希值。
-
SHA-3 (Secure Hash Algorithm 3):SHA-3 是由 NIST 发布的最新的哈希算法标准,它基于 Keccak 算法。它提供了一些新的安全性和性能特性。
-
Blake2:Blake2 是一种高性能哈希算法,被设计为取代 MD5、SHA-1 和 SHA-256。它在安全性和性能方面都有不错的表现。
-
Whirlpool:Whirlpool 是一种块密码的哈希算法,输出512位哈希值。它被认为是较安全的哈希算法之一。
-
RIPEMD (RACE Integrity Primitives Evaluation Message Digest):RIPEMD 系列算法包括 RIPEMD-160、RIPEMD-256、RIPEMD-320 等,用于生成不同长度的哈希值。
-
BLAKE3:BLAKE3 是 BLAKE2 的继承者,是一种高性能、安全性良好的哈希算法,适用于多种应用。