当前位置: 首页 > news >正文

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

密码学入门区块链中的密码学原理大家好我是欧阳瑞Rich Own。今天想和大家聊聊密码学这个重要话题。作为一个Web3探索者密码学是区块链的基础。今天就来分享一下区块链中常用的密码学原理。为什么密码学很重要场景说明身份认证验证用户身份数据加密保护敏感数据数字签名验证数据完整性零知识证明无需泄露信息证明哈希函数什么是哈希函数哈希函数将任意长度的数据转换为固定长度的哈希值。特性特性说明确定性相同输入产生相同输出单向性无法从哈希值还原输入抗碰撞难以找到两个不同输入产生相同哈希常用哈希函数import hashlib # SHA-256 hash hashlib.sha256(bHello World).hexdigest() print(hash) # Keccak-256 (以太坊使用) from Crypto.Hash import keccak k keccak.new(digest_bits256) k.update(bHello World) print(k.hexdigest())数字签名ECDSA签名from ecdsa import SigningKey, VerifyingKey, NIST256p # 生成密钥对 sk SigningKey.generate(curveNIST256p) vk sk.get_verifying_key() # 签名 message bHello 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 bHello 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_exponent65537, key_size2048) public_key private_key.public_key() # 加密 message bSecret message ciphertext public_key.encrypt( message, padding.OAEP( mgfpadding.MGF1(algorithmhashes.SHA256()), algorithmhashes.SHA256(), labelNone ) ) # 解密 plaintext private_key.decrypt( ciphertext, padding.OAEP( mgfpadding.MGF1(algorithmhashes.SHA256()), algorithmhashes.SHA256(), labelNone ) )零知识证明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对密码学也有自己的理解——它总是用独特的方式标记自己的领地这也许就是自然界的数字签名吧如果你对密码学感兴趣欢迎留言交流我是欧阳瑞极客之路永无止境技术栈密码学 · 哈希函数 · 数字签名 · 区块链
http://www.rkmt.cn/news/1380360.html

相关文章:

  • 关于软件版本升级的故事
  • TorchEasyRec:阿里巴巴开源的推荐系统深度学习框架详解
  • Docker 部署 Nginx:从入门到生产级配置实战
  • 被裁程序员吐槽:Meta 是我见过最有毒的公司。我所在部门 90% 是华裔,日常沟通普通话,非华裔常遭排挤
  • 登录界面存在问题-------验证码不会自动更新
  • Token Plan 套餐如何帮助项目在预算内实现模型调用自由
  • 终极微信抢红包指南:无需ROOT的智能助手完整教程
  • 重温数据库访问
  • 全面战争模组开发终极指南:用RPFM轻松制作专业级游戏模组
  • FanControl中文版终极指南:Windows专业风扇控制软件完全实战手册
  • 3个秘诀让抖音视频永久保存:开源工具实现去水印批量下载
  • Windows流媒体服务器SRS终极部署指南:5分钟搭建高性能视频传输系统
  • 别再手动改代码了!用Vivado的VIO IP核实时调试你的FPGA设计(附UART实例)
  • 关于内卷,几个值得深想的洞察
  • 终极鸣潮优化指南:WaveTools工具箱让你的游戏体验飞起来
  • TII投稿避坑指南:LaTeX模板编译报错‘xxx-eps-converted-to.pdf not found’的终极解决方案
  • 机器学习回归模型在政策冲击下股市预测的实战对比:线性回归、SVR、随机森林与kNN
  • 窗口函数必知必会【Ⅱ】常用函数族
  • Taotoken 在多模型聚合场景下的路由与容灾机制解析
  • BepInEx插件框架:3个新手常见问题与轻松解决方案
  • 3个颠覆性技巧:重新定义Cursor AI免费使用的终极指南
  • 3步搞定iPhone USB网络共享:Apple-Mobile-Drivers-Installer终极安装指南
  • 2026年护照照片手机制作详细指南:规格要求+五大方法一步步教你
  • 终极指南:如何免费播放英雄联盟所有版本回放文件
  • Python多智能体建模终极指南:用Mesa轻松构建复杂系统仿真
  • 如何零基础实现抖音无水印批量下载:完整教程与实战指南
  • 为什么92%的AI系统设计团队在DeepSeek辅助阶段就踩了性能断层陷阱?
  • 新手如何从零开始在 Taotoken 平台获取并管理首个 API Key
  • 内网横向移动第一步:如何用netspy精准绘制可达网段地图(避坑ICMP权限问题)
  • TV Bro电视浏览器完整指南:轻松掌握智能电视上网的终极方案