密码学的hash函数,哈希碰撞, collision resistance, BTC用到的SHA-256简介

密码学中的哈希函数、哈希碰撞、抗碰撞性(collision resistance)以及比特币中使用的 SHA-256 的简明介绍:


🧩 一、哈希函数(Hash Function)

定义:

哈希函数是一种将任意长度的输入(消息)映射为固定长度输出(哈希值,digest)的函数。

特点:

  1. 输入可以是任意长度,输出固定长度(如256位)。
  2. 相同输入总是得到相同的输出。
  3. 不同输入得到相同输出的概率极低。
  4. 哈希过程不可逆(不能从输出推回输入)。

🎯 二、哈希碰撞(Hash Collision)

定义:

当两个不同的输入通过哈希函数得到了相同的输出 时,就发生了哈希碰撞(collision)

例子:

text 复制代码
H("hello") = 0x123456...
H("world") = 0x123456...  ← 碰撞

🛡️ 三、抗碰撞性(Collision Resistance)

定义:

一个哈希函数是"抗碰撞的",意味着要找到两个不同的输入,使得它们哈希结果相同非常困难(计算上不可行)。

哈希函数的安全性主要包括三个方面:

  1. Preimage Resistance(单向性): 给定 H(x),难以找出 x。
  2. Second Preimage Resistance(第二原像抵抗): 给定 x1 和 H(x1),难以找出 x2 ≠ x1 使得 H(x1) = H(x2)。
  3. Collision Resistance(抗碰撞性): 难以找到任何 x1 ≠ x2,使得 H(x1) = H(x2)。

🪙 四、比特币中的 SHA-256

SHA-256: 是 Secure Hash Algorithm 2(SHA-2)系列中的一种,由 NSA 设计,输出长度为 256 位(32 字节)。

用途:

  1. 挖矿(Proof of Work)
    • 挖矿者需要找到一个 nonce,使得 SHA256(SHA256(BlockHeader)) 的结果小于某个目标值。
  2. 交易哈希(Transaction Hashing)
    • 每笔交易都会被哈希成一个唯一 ID。
  3. 区块哈希(Block Hashing)
    • 整个区块头部被双重哈希生成 block hash,用作区块标识。
  4. Merkle Tree 构建
    • 每个交易被哈希,然后两两组合再次哈希,最终得到 Merkle Root,作为区块头的一部分。
text 复制代码
比特币挖矿核心:  
找一个 nonce,使得  
SHA256(SHA256(BlockHeader)) < Target

📌 示例:SHA-256 哈希

bash 复制代码
echo -n "hello" | openssl dgst -sha256
# 输出:2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

相关推荐
baopixiaoz15 小时前
AI量化策略师|Web3 量化交易研究员
大数据·人工智能·python·区块链
吴声子夜歌20 小时前
网络安全——密码学基础(二)
安全·web安全·密码学
Jiamiren1 天前
WEEX:长鑫科技上市大涨,宇树科技合约同步走高,传统资产交易迎来新路径
人工智能·科技·区块链
小星星闪亮登场2 天前
2026河南萌新联赛第四场--南阳理工学院
数据结构·算法·贪心算法·动态规划·哈希算法·广度优先
Sagittarius_A*2 天前
公钥密码基础(一):从对称密码到公钥密码——密钥分发问题
信息安全·密码学·公钥密码·密钥分发
黄焖鸡能干四碗2 天前
信息安全保障方案(Word文件)
大数据·网络·人工智能·架构·区块链
Web3李李3 天前
链游想要获得市场认可,核心从来不是极致去中心化
web3·去中心化·区块链·软件开发·链游开发
我变成萤火虫3 天前
河南萌新联赛2026第(三)场:郑州轻工业大学
数据结构·c++·算法·贪心算法·stl·深度优先·哈希算法
mykj15513 天前
稳定的DOO算力质押系统DAPP合约底层逻辑
web3·区块链·dapp·rwa·质押挖矿
breeze jiang3 天前
Next.js App Router 父子组件 RSC 拆分实战:从 Redis Hash 到客户端交互的最小化边界
javascript·redis·哈希算法