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...
