密码学入门:区块链中的密码学原理
2026/5/25 15:18:11 网站建设 项目流程

密码学入门:区块链中的密码学原理

大家好,我是欧阳瑞(Rich Own)。今天想和大家聊聊密码学这个重要话题。作为一个Web3探索者,密码学是区块链的基础。今天就来分享一下区块链中常用的密码学原理。

为什么密码学很重要?

场景说明
身份认证验证用户身份
数据加密保护敏感数据
数字签名验证数据完整性
零知识证明无需泄露信息证明

哈希函数

什么是哈希函数?

哈希函数将任意长度的数据转换为固定长度的哈希值。

特性

特性说明
确定性相同输入产生相同输出
单向性无法从哈希值还原输入
抗碰撞难以找到两个不同输入产生相同哈希

常用哈希函数

import hashlib # SHA-256 hash = hashlib.sha256(b"Hello World").hexdigest() print(hash) # Keccak-256 (以太坊使用) from Crypto.Hash import keccak k = keccak.new(digest_bits=256) k.update(b"Hello World") print(k.hexdigest())

数字签名

ECDSA签名

from ecdsa import SigningKey, VerifyingKey, NIST256p # 生成密钥对 sk = SigningKey.generate(curve=NIST256p) vk = sk.get_verifying_key() # 签名 message = b"Hello World" signature = sk.sign(message) # 验证 assert vk.verify(signature, message)

EdDSA签名

from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey # 生成密钥对 private_key = Ed25519PrivateKey.generate() public_key = private_key.public_key() # 签名 message = b"Hello World" signature = private_key.sign(message) # 验证 public_key.verify(signature, message)

非对称加密

from cryptography.hazmat.primitives.asymmetric import rsa, padding from cryptography.hazmat.primitives import serialization, hashes # 生成密钥对 private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) public_key = private_key.public_key() # 加密 message = b"Secret message" ciphertext = public_key.encrypt( message, padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None ) ) # 解密 plaintext = private_key.decrypt( ciphertext, padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None ) )

零知识证明

zk-SNARKs

# 简化示例 class ZKProof: def __init__(self, secret): self.secret = secret def prove(self): # 生成证明 commitment = hash(self.secret) challenge = hash(commitment) response = self.secret + challenge return (commitment, response) def verify(commitment, response): challenge = hash(commitment) return hash(response - challenge) == commitment

实战案例:区块链交易签名

from ecdsa import SigningKey, NIST256p import hashlib class Transaction: def __init__(self, sender, receiver, amount): self.sender = sender self.receiver = receiver self.amount = amount def sign(self, private_key): data = f"{self.sender}{self.receiver}{self.amount}" hash_data = hashlib.sha256(data.encode()).digest() return private_key.sign(hash_data) def verify_signature(self, public_key, signature): data = f"{self.sender}{self.receiver}{self.amount}" hash_data = hashlib.sha256(data.encode()).digest() return public_key.verify(signature, hash_data)

总结

密码学是区块链的基石。从哈希函数到零知识证明,密码学保证了区块链的安全性和可靠性。

我的鬃狮蜥Hash对密码学也有自己的理解——它总是用独特的方式标记自己的领地,这也许就是自然界的"数字签名"吧!

如果你对密码学感兴趣,欢迎留言交流!我是欧阳瑞,极客之路,永无止境!


技术栈:密码学 · 哈希函数 · 数字签名 · 区块链

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询