区块链中的密码学

文章目录

  • 前言
    • 区块链中的密码学
      • [1. 哈希算法](#1. 哈希算法)
      • [2. 哈希树](#2. 哈希树)
      • [3. 公钥密码学](#3. 公钥密码学)
        • [3.1. 生成关系](#3.1. 生成关系)
        • [3.2. 功能关系](#3.2. 功能关系)
        • [3.3. 安全关系](#3.3. 安全关系)
        • [3.4. 场景](#3.4. 场景)
          • [3.4.1. 场景一:加密通信场景 (公钥加密 → 私钥解密)](#3.4.1. 场景一:加密通信场景 (公钥加密 → 私钥解密))
          • [3.4.2. 场景二:数字签名(私钥签名 → 公钥验签)](#3.4.2. 场景二:数字签名(私钥签名 → 公钥验签))
          • [3.4.3. 场景区别](#3.4.3. 场景区别)

前言

如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。

而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


区块链中的密码学

1. 哈希算法

哈希算法是一种单向加密算法,能把一串数据加密成二进制串,但无法从这串二进制还原出原数据;它有三个特点:

1、相同输入会得到相同二进制串(64 位十六进制哈希值);

2、不同输入对应不同二进制串(强对抗性);

3、输出的二进制长度一致;

1个十六进制字符对应 4 位二进制,64 位十六进制字符 = 64×4 = 256 位二进制;

1 字节 = 8 位二进制;

256 位二进制 = 256÷8 = 32 字节;

使用场景:

2. 哈希树

特点:

  • 结构灵活:一般是二叉树,也可以是多叉树,具备树结构的基本特性;
  • 根节点稳定:根节点只由数据决定,和更新顺序无关,哪怕重新计算整棵树,根节点也不会变;
  • 高效校验:若两个默克树的根节点相同,代表对应数据完全一致,用根节点校验能大幅减少数据传输和计算量;
  • 分支独立:树的任意一个分支本身也是默克树,可单独用来做数据校验;
  • 节省空间:区块链交易数据过多时,只需保留默克树的根节点,删除下层节点就能节省存储空间。

数据结构:

3. 公钥密码学

使用非对称加密技术,其相对于对称加密技术,在对称加密技术中加密使用相同的秘钥加密数据,为了让对方能够解密,需要同时将密文和秘钥发给对方,而非对称加密技术,有公钥和私钥两个,公钥用来加密,私钥用来解密,公钥可以发给任何人。

公钥和私钥是非对称加密算法 的核心,它们是一对 "数学绑定、单向推导、功能互补" 的密钥。

3.1. 生成关系
  • 私钥是起点:由加密算法生成的一个超大随机数,是整个密钥对的根源。
  • 公钥是推导结果:通过椭圆曲线(如 ECDSA)或 RSA 算法,从私钥计算得出。
  • 关键特性:这个推导过程是单向不可逆的 ------ 你可以从私钥算出公钥,但无法从公钥反推出私钥,这也是非对称加密安全的核心。
3.2. 功能关系
序号 私钥(Secret Key) 公钥(Public Key)
1 由用户秘密保存 ,绝不对外泄露 可以公开给任何人 ,无需保密
2 用于解密 用对应公钥加密的消息 用于加密 只有对应私钥才能解密的消息
3 用于生成数字签名 ,证明身份 用于验证数字签名 ,确认消息来源与完整性
3.3. 安全关系
  • 用公钥加密的内容,只有对应的私钥才能解密。
  • 用私钥生成的数字签名,只有对应的公钥才能验证。
  • 这种 "唯一对应" 的数学关系,保证了数据传输和身份验证的安全性。
3.4. 场景
3.4.1. 场景一:加密通信场景 (公钥加密 → 私钥解密)
  1. 你在本地生成私钥 → 用算法推导出公钥
  2. 你把公钥发给发送方(或公开在网络上)
  3. 发送方用你的公钥加密原始消息 → 得到密文
  4. 密文在网络传输(不怕被截获,因为没有私钥解不开)
  5. 你用自己的私钥解密密文 → 得到原始消息

✅ 核心目的:保证消息的保密性

3.4.2. 场景二:数字签名(私钥签名 → 公钥验签)

数字签名是区块链中的重要技术,它的作用可以类比我们生活中的手写签名:

  • 手写签名用来确认纸质文件的内容和签署人;
  • 数字签名则用来证实数字内容的完整性(内容没被篡改)、来源(是谁发出的),并保证签名的有效性和不可抵赖性(签名者事后不能否认自己签过字);

关键特性:

  • 完整性:一旦内容被篡改,数字签名就会失效,能立刻发现数据被改动。
  • 不可抵赖性:因为签名是由用户的私钥生成的,其他人无法伪造,所以签名者无法否认自己的行为。
  • 身份认证:通过验证数字签名,可以确认数据确实来自声称的发送方。

区块链中的作用:

在区块链里,每一笔交易都需要数字签名来确认身份和内容。这保证了:

  • 只有私钥持有者才能发起交易;
  • 交易数据在全网广播和存储过程中不会被篡改;
  • 所有节点都可以通过公钥验证签名的有效性;

大概流程:

  1. 你生成私钥 → 推导出公钥,并把公钥发给接收方。
  2. 你用自己的私钥对消息摘要做签名运算 → 得到数字签名。
  3. 你把原始消息 + 签名发给接收方。
  4. 接收方用你的公钥对签名做验证运算 → 得到消息摘要。
  5. 接收方对收到的原始消息重新计算摘要,对比后确认消息未被篡改且来自你。
    ✅ 核心目的:保证消息的真实性和完整性,防止抵赖。

示例:

假设Alice要向Bob发送一条信息,Bob需要验证信息的完整性和真实性。

bash 复制代码
* 生成密钥对:Alice 生成私钥(自己保管)和公钥(公开给 Bob)。
* 生成摘要:Alice 用哈希算法(如 SHA-256)对消息 M 生成唯一的摘要 H (M)。
* 生成签名:Alice 用私钥对 H (M) 进行签名运算,得到数字签名 S。
* 发送消息:Alice 把 M 和 S 一起发给 Bob。
* 验证签名:
    * Bob 用 Alice 的公钥对 S 进行验证运算,得到 H'(M)。
    * Bob 对收到的 M 重新计算哈希,得到 H (M)。
    * 比较 H'(M) 和 H (M),如果一致,说明消息未被篡改且确实来自 Alice。
3.4.3. 场景区别
  • 加密通信是 "别人锁,你开"
  • 数字签名是 "你锁,别人开"
相关推荐
半路_出家ren3 小时前
1.古典密码概述
python·网络安全·密码学·古典密码·加密方式
公链开发5 小时前
2026年算力+区块链三大核心融合方向(纯技术、非金融视角)
web3·区块链
碳链价值5 小时前
Tom Lee怎么看比特币超级周期
区块链
雷焰财经6 小时前
iBox CEO宣松涛:“区块链+数字文化”引领文化产业新范式
区块链
反向跟单策略6 小时前
如何正确看待期货反向跟单策略?
大数据·人工智能·学习·数据分析·区块链
MQLYES9 小时前
13-BTC-思考
区块链
MetaverseMan10 小时前
rpc节点: synchronized (this) + 双检锁,在 race condition 的情况下分析
java·区块链
MQLYES11 小时前
15-ETH-账户
区块链
栗子~~11 小时前
以太坊-区块链 2.0 相关生态
区块链