区块链基础知识 —— 交易的签名与验证过程(无数学公式)

7 阅读4分钟

想象一下,Alice 想给 Bob 发送一条加密的消息,并且Bob需要能证明这条消息确实来自Alice,且在传输途中没有被篡改


一、核心角色(类比)

  • 私钥 (Private Key):就像Alice的独一无二的印章。这个印章只有Alice自己拥有,她可以用它在任何文件上盖章。
  • 公钥 (Public Key):就像Alice印章的官方验章器。Bob(以及任何人)都可以拿到这个验章器。它不能用来盖章,但可以用来检查一个章是不是Alice的那个独一无二的印章盖出来的。
  • 消息 (Message):就是Alice要发送的那条交易信息,比如“我从地址A转1个BTC到地址B”。

二、签名过程 (Alice做的事)

Alice想要发送消息 “我从地址A转1个BTC到地址B”。

  1. 制作文件摘要:Alice不是直接对整条冗长的消息盖章,而是先让消息通过一个魔法碎纸机(哈希函数)。这个碎纸机会把任何长度的文件都粉碎成一串长度固定、且独一无二的“摘要”(就像指纹一样)。哪怕消息只改了一个标点符号,出来的摘要也会完全不同。

    • 输入: “我从地址A转1个BTC到地址B”
    • 输出(示例):x12aF...8c3d (这个就是哈希值)
  2. 用私钥盖章:Alice然后拿出她的私钥印章,在这个摘要 (x12aF...8c3d) 上盖了一个章。这个盖章的动作(签名算法)会产生一个独特的、基于这份摘要她的私钥签名

  3. 发送:Alice把原始消息(“我从地址A转1个BTC到地址B”)和生成的签名一起发送给网络。她不需要发送她的私钥,也不需要发送摘要。


三、验证过程 (网络上的每个人做的事)

Bob和其他网络节点收到了Alice的消息和签名。他们需要验证这是真的。

  1. 使用相同的魔法碎纸机:Bob将收到的原始消息(“我从地址A转1个BTC到地址B”)放入同一个魔法碎纸机(哈希函数)。他自己计算出了一份摘要。我们称这个为 摘要_B

    • 输入: “我从地址A转1个BTC到地址B”
    • 输出x12aF...8c3d (如果消息没被改过,这个值应该和Alice当初计算的一样)
  2. 使用验章器:Bob现在拿出Alice公开的验章器(公钥)。他把这个验章器、收到的签名、以及他自己算出的摘要_B (x12aF...8c3d) 放在一起验证。

  3. 得出验证结果

    • 验证通过 (✅):如果验章器显示“匹配”,那就意味着: a. 这条消息的摘要 (摘要_B) 确实和Alice当初签名时用的摘要一致 -> 消息未被篡改。 b. 这个签名确实是由Alice的私钥印章盖的 -> 身份真实有效
    • 验证失败 (❌):如果验章器显示“不匹配”,则说明要么消息被篡改了,要么签名是伪造的,整个交易会被网络拒绝。

图示

sequenceDiagram
    participant A as Alice
    participant N as 网络/验证者(Bob等)

    Note over A: 签名过程
    A ->> A: 对原始消息进行哈希运算<br/>生成消息摘要
    A ->> A: 使用私钥对摘要进行签名<br/>生成数字签名
    A ->> N: 发送【原始消息 + 数字签名】

    Note over N: 验证过程
    N ->> N: 对收到的【原始消息】<br/>进行同样的哈希运算,<br/>得到【摘要_B】
    N ->> N: 使用Alice的公钥<br/>对【数字签名】进行验证,<br/>并对比【摘要_B】
    
    alt 验证成功
        N -->> N: ✅ 验证通过<br/>消息完整且身份真实
    else 验证失败
        N -->> N: ❌ 验证失败<br/>消息被篡改或签名伪造
    end

总结与关键点

步骤Alice(签名者)网络(验证者)
1. 哈希用哈希函数处理原始消息,得到摘要相同的哈希函数处理收到的原始消息,得到自己的摘要_B
2. 加密/验证私钥摘要进行“盖章”(签名),得到签名用Alice的公钥去验证收到的签名摘要_B是否匹配。
3. 发送/接收发送原始消息 + 签名接收并验证。根据结果接受或拒绝交易。

为什么这个过程安全?

  1. 私钥永不泄露:Alice的私钥(印章)从未被发送或暴露。签名只是证明她拥有私钥,而不透露私钥本身。
  2. 完整性:任何对消息的修改,哪怕只有一个字符,都会导致哈希值(摘要)彻底改变,从而使验证失败。
  3. 身份认证:只有私钥的持有者才能产生出能被对应公钥验证的签名。
  4. 不可否认:既然只有Alice能生成这个有效的签名,她就无法事后否认自己发过这条消息。

这就是数字签名的工作原理——它巧妙地利用了哈希函数的敏感性和非对称加密的身份绑定能力,共同构成了区块链信任的基石。

学习交流请添加vx: gh313061