RSA (Rivest–Shamir–Adleman) 加密算法详解
RSA 是一种非对称加密算法,由 Ron Rivest、Adi Shamir 和 Leonard Adleman 于 1977 年提出,并以他们姓氏的首字母命名。它是目前应用最广泛的公钥密码算法之一,广泛用于数据加密、数字签名以及密钥交换等领域。RSA 的安全性基于大整数分解的困难性,即给定两个大素数 p 和 q,计算它们的乘积 n = p * q 是容易的,但给定 n 却很难反向分解出 p 和 q。 一、引言:公钥密码学的基石在密码学领域,我们通常将加密算法分为两大类:对称加密和非对称加密。 对称加密 (Symmetric Encryption):使用相同的密钥进行加密和解密。优点是速度快,但密钥分发和管理是其主要挑战。 非对称加密 (Asymmetric Encryption / Public-key Cryptography):使用一对密钥,即一个公钥 (Public Key) 和一个私钥 (Private Key)。公钥可以公开,用于加密或验证签名;私钥必须严格保密,用于解密或生成签名。 RSA 算法是公钥密码学的代表,解决了对称加密中密钥分发的难题。其...
ChaCha20 流密码加密算法详解
ChaCha20 是一种高性能、高安全性的对称流密码算法,由 Google 的 Dan Bernstein 于 2008 年设计。它是 Salsa20 算法的改进版本,旨在提供比其前辈更高的抗攻击能力和更简洁的实现。ChaCha20 因其卓越的性能和安全性,已成为 TLS 协议中的重要组成部分,特别是在移动设备和低功耗环境中,替代了传统的 AES-GCM。 核心思想:通过一个密钥 (Key) 和一个随机数 (Nonce) 生成一个无限长的伪随机密钥流,然后将密钥流与明文进行异或 (XOR) 操作得到密文。解密时,使用相同的密钥和随机数生成相同的密钥流,再与密文异或即可还原明文。 一、流密码 (Stream Cipher) 简介流密码是一种对称加密算法,它将明文的每个比特或每个字节与一个伪随机密钥流的对应比特或字节进行组合(通常是异或)来生成密文。 1.1 与分组密码 (Block Cipher) 的区别 特性 流密码 (Stream Cipher) 分组密码 (Block Cipher) 工作方式 逐位/逐字节加密 将明文分成固定大小的块,逐块加密 ...
AES (Advanced Encryption Standard) 加密算法详解
AES (Advanced Encryption Standard),即高级加密标准,是目前应用最广泛的对称密钥分组加密算法。它于 2001 年由美国国家标准与技术研究院 (NIST) 发布,取代了 DES (Data Encryption Standard) 成为联邦政府推荐的加密标准。AES 的设计基于替代-置换网络 (Substitution-Permutation Network, SPN) 结构,具有高效、安全和易于实现的特点,被广泛应用于网络通信、数据存储、文件加密等各种场景。 一、引言:对称加密的王者在现代密码学中,对称加密算法因其加解密速度快而常用于对大量数据进行加密。AES 是其中的翘楚,被认为是当今最安全的对称加密算法之一。 对称加密 (Symmetric Encryption):使用相同的密钥进行加密和解密。优点是效率高,适合加密大量数据;缺点是密钥分发和管理复杂。 分组密码 (Block Cipher):将明文数据分成固定大小的块(例如 AES 是 128 位),对每个块独立进行加密。 AES 具有以下关键特性: 块大小 (Block Size)...
SHA-256 算法详解
SHA-256 (Secure Hash Algorithm 256) 是 SHA-2 (Secure Hash Algorithm 2) 系列中最常用和最广为人知的加密散列函数之一。它由美国国家标准与技术研究院 (NIST) 于 2001 年发布,作为 MD5 和 SHA-1 的替代品,旨在提供更高的安全强度。SHA-256 能够将任意长度的输入数据(消息)通过哈希运算转换成一个固定长度的 256 位(32 字节)散列值,通常以 64 位十六进制字符串表示。它广泛应用于数字签名、数据完整性校验、密码存储以及区块链技术等领域,是目前主流且被认为安全的哈希算法。 一、加密哈希函数的基本特性在深入 SHA-256 之前,理解一个安全的加密哈希函数应具备的关键特性至关重要: 确定性 (Deterministic):相同的输入消息总是产生相同的哈希值。 计算效率 (Computational Efficiency):对于任意输入消息,计算其哈希值是高效的。 抗原像性 / 单向性 (Preimage Resistance / One-Way):给定一个哈希值,从计...
SHA (Secure Hash Algorithm) 系列算法详解
SHA (Secure Hash Algorithm) 是一系列由美国国家安全局 (NSA) 设计,并由美国国家标准与技术研究院 (NIST) 发布的安全散列算法。与 MD5 类似,SHA 算法家族将任意长度的输入数据(消息)转换为固定长度的小型字节串,即消息摘要 (Message Digest) 或 哈希值 (Hash Value)。SHA 系列算法在密码学和信息安全领域扮演着至关重要的角色,广泛应用于数字签名、数据完整性校验、密码存储和区块链等场景。 核心思想:通过设计精密的数学和逻辑运算,确保输入数据的微小改变会导致输出哈希值的巨大、不可预测的变化(雪崩效应),并使其具有单向性和抗碰撞性,从而提供数据的完整性和认证功能。 一、SHA 算法家族概述SHA 家族包括以下主要算法版本: SHA-0:1993 年发布,很快发现安全漏洞,被 SHA-1 取代。 SHA-1:1995 年发布,输出 160 位哈希值。曾被广泛使用,但现在已被认为不安全。 SHA-2:2001 年发布,是一个包含多个变体的家族,包括 SHA-224, SHA-256, SHA-384, SHA-...
MD5 (Message-Digest Algorithm 5)算法详解
MD5 (Message Digest Algorithm 5) 是一种广泛使用的加密散列函数,由 Ronald Rivest 于 1991 年设计。它能够将任意长度的输入数据(通常称为“消息”或“原文”)通过哈希运算转换成一个固定长度的 128 位(16 字节)散列值,通常以 32 位十六进制字符串表示。MD5 的设计初衷是用于验证数据完整性,即确保数据在传输或存储过程中未被篡改。 重要安全提示: MD5 算法已被证实存在严重的碰撞漏洞。这意味着可以找到两个不同的输入数据,它们会产生完全相同的 MD5 散列值。因此,MD5 已不再被认为是安全的加密哈希函数,不应再用于需要密码学安全性的场景,如数字签名、密码存储(即使加盐也不推荐)或生成 SSL 证书。 它主要仍用于非安全敏感场景下的文件完整性校验和快速数据比对。 一、引言:哈希函数的基本概念哈希函数 (Hash Function),也称为散列函数,是一类将任意大小的数据映射到固定大小值的函数。在密码学领域,加密哈希函数 (Cryptographic Hash Function) 需要满足更严格的特性: 确定性 (De...
