公钥是私钥的加密对应物。它们共同让你能够证明对加密货币的所有权,而无需泄露控制它的秘密。
摘要
- 公钥是通过椭圆曲线乘法从私钥数学推导出的大数,这是一种单向函数,正向计算快速,但逆向几乎不可能。
- 比特币和以太坊都使用secp256k1椭圆曲线,该曲线产生256位私钥和512位未压缩公钥(或257位压缩公钥)。
- 钱包地址与公钥不同;地址是公钥的较短哈希版本,旨在更易于分享,并更能抵抗某些理论攻击。
- 私钥签署交易,公钥验证这些签名,地址接收资金。丢失私钥意味着永久失去访问权限;分享公钥或地址不会对资金安全构成风险。
- 2026年7月的Coldcard固件漏洞暴露了弱私钥生成,影响了1.16亿美元的比特币,这凸显了正确的密钥生成和存储仍然是自我托管中最关键的方面。
公钥密码学是每笔加密货币交易的基础,但大多数用户从未直接与他们的公钥交互。他们看到钱包地址,扫描二维码,确认转账,却不了解使无需信任的所有权成为可能的数学层。
这一层很重要,因为理解它会改变你对安全的看法。公钥不是密码。它不是秘密。它是一个你可以与任何人分享的数字,没有人能从它推导出控制你资金的私钥。这种不对称性——单向容易,逆向不可能——是让互联网上的陌生人无需信任银行、政府或彼此就能互相转账的原因。
密钥对如何工作
每个加密货币钱包都建立在密钥对上:一个私钥和一个公钥。私钥是一个随机生成的数字,通常为256位,这意味着它大约是10的77次方个可能值之一。作为背景,可观测宇宙中估计的原子数约为10的80次方。密钥空间足够大,以至于通过暴力破解猜测特定私钥在当前或可预见的未来技术下都不是实际担忧。
公钥通过椭圆曲线乘法从私钥推导而来。比特币和以太坊都使用一条名为secp256k1的特定曲线。私钥乘以该曲线上的一个固定点(称为生成点),结果是曲线上的另一个点。该结果就是公钥。
关键特性是这种乘法是单向函数。给定私钥,计算公钥只需几分之一秒。仅给定公钥,计算私钥需要解决椭圆曲线离散对数问题,而该问题没有已知的高效解法。这种不对称性是加密货币安全的全部基础。
公钥与钱包地址
一个常见的误解是钱包地址和公钥是同一回事。它们不是。地址是通过一轮或多轮哈希从公钥推导出来的,这个过程缩短了输出并增加了额外的安全层。
在比特币中,过程如下。512位未压缩公钥(或257位压缩公钥)经过SHA-256,然后经过RIPEMD-160,产生160位哈希。前置版本字节,附加校验和,结果以Base58Check格式编码。最终输出是熟悉的比特币地址,以1、3或bc1开头。
在以太坊中,过程更简单。512位公钥经过Keccak-256(SHA-3的变体),哈希的最后20字节(160位)成为地址。添加“0x”前缀和可选的EIP-55校验和,产生熟悉的以太坊地址。
将公钥哈希为地址的原因部分是出于实际考虑(较短的字符串更容易分享),部分是出于防御性考虑。如果量子计算机有朝一日能够破解椭圆曲线加密,它们将需要公钥(而非地址)来推导出私钥。从未用于发送交易的地址从未在链上暴露过其公钥,从而增加了一层理论上的量子抗性。
数字签名如何证明所有权
当你发送加密货币时,你并不是将硬币从一个位置移动到另一个位置。你是在创建一条消息,上面写着“我授权将X数量的资金从我的地址转移给这个接收者”,并用你的私钥对该消息进行签名。签名证明创建消息的人控制着与发送地址相关联的私钥,而无需泄露私钥本身。
验证过程使用公钥。任何在网络中运行节点的人都可以获取交易消息、数字签名和发送者的公钥,并进行数学验证,以确认该签名是由对应的私钥生成的。如果验证通过,交易有效;如果验证失败,交易被拒绝。
这就是为什么丢失私钥是灾难性的。没有私钥就意味着无法生成有效的签名,也就无法授权从该地址进行交易。资金仍然留在区块链上,所有人都能看到,但永远无法访问。没有“忘记密码”恢复机制,因为没有持有备份的中心化权威机构。
密钥生成链
在现代钱包中,单个私钥并不是独立生成的。相反,一个单一的主种子通过由BIP-32(分层确定性钱包)和BIP-39(助记词种子短语)定义的确定性过程生成钱包中的所有密钥。
该过程始于熵,即随机性来源。钱包软件或硬件设备生成一个随机数,通常是128位或256位。这个熵被编码为12或24个单词的助记词短语,这些单词来自一个包含2048个单词的标准化列表。助记词短语与可选密码短语结合,通过密钥派生函数(PBKDF2)生成一个512位的主种子。
从主种子派生出一个层级密钥对树。树的每个分支可以生成数十亿个唯一的私钥及其对应的公钥和地址。这就是为什么一个种子短语可以恢复整个钱包及其所有地址:种子确定性地重新生成层级中的每一对密钥。
安全含义在于,种子短语是所有密钥的根源。任何获得种子短语的人都可以重新生成钱包曾经使用或将来会使用的每一个私钥、公钥和地址。保护种子短语等同于同时保护钱包中的每一对密钥。
压缩与非压缩公钥
早期的比特币软件使用非压缩公钥,其中包括椭圆曲线上点的x和y坐标。非压缩公钥为65字节:1字节前缀(0x04),后跟32字节的x坐标和32字节的y坐标。
由于椭圆曲线方程意味着对于任何给定的x坐标,只有两个可能的y值(一个偶数,一个奇数),因此只需存储x坐标和一个指示y是偶数还是奇数的单个比特就足够了。这产生了33字节的压缩公钥:1字节前缀(偶数y为0x02,奇数y为0x03),后跟32字节的x坐标。
压缩密钥在交易中节省空间,从而降低费用。自2012年以来,大多数比特币软件默认使用压缩公钥。以太坊在内部使用非压缩公钥,但在地址派生时去除前缀字节,仅使用64字节的x和y值。
这种区别对于兼容性很重要。从同一私钥派生的压缩和非压缩公钥在比特币中产生不同的地址。将私钥导入使用与原始钱包不同压缩格式的钱包将生成不同的地址,如果资金被发送到另一种格式的地址,可能会导致混淆。
现实世界中的密钥安全失败
公钥加密背后的理论是健全的,但实现上的失败已经造成了重大损失。
2026年7月,研究人员发现Coldcard硬件钱包在五年间一直生成弱私钥。固件中的一个构建标志指示设备跳过其专用的硬件随机数芯片,导致熵可预测。攻击者逆向工程了这一弱点,并于7月30日开始盗取钱包,在漏洞公开披露前,盗走了约1.16亿美元的比特币。
教训是,密钥对的安全性完全取决于生成私钥时所用随机数的质量。如果随机数生成器存在缺陷、偏差或可预测性,那么理论上不可破解的256位密钥也毫无价值。这就是为什么信誉良好的硬件钱包使用专用的真随机数生成器,并允许用户添加自己的熵(如掷骰子)作为额外保障。
其他历史事件包括2013年的Android SecureRandom漏洞,该漏洞导致多个比特币钱包生成重复的随机数,使攻击者能够从交易签名中计算出私钥。2022年9月,Profanity虚荣地址生成器被利用,研究人员发现其密钥生成使用了32位种子,将有效密钥空间从2的256次方减少到2的32次方,大约40亿种可能性,可在几分钟内被暴力破解。
公钥与智能合约
在像以太坊这样的智能合约平台上,公钥密码学具有双重目的。它保护外部拥有账户(EOA),即由私钥控制的标准用户钱包,并验证这些账户在与智能合约交互时签名的消息。
当用户调用智能合约上的函数时,交易包含由用户私钥生成的数字签名。以太坊虚拟机在执行函数之前,会根据发送者的公钥验证该签名。这就是智能合约如何知道调用“向地址X转账100 USDC”的人实际上是所转移代币的所有者。
智能合约钱包(由ERC-4337引入的账户抽象钱包)可以修改此模型。智能合约钱包不是仅依赖单个私钥,而是可以要求多重签名、生物识别认证、社交恢复或由代码执行的支出限额。公钥仍然是系统的一部分,但构成有效授权的规则变得可编程。
托管与自我托管密钥管理
在中心化交易所上,交易所持有私钥,用户通过传统身份验证(用户名、密码、双因素代码)访问其资金。用户永远不会看到公钥或私钥。交易所代表用户签署交易。
在自我托管中,用户持有私钥(或生成私钥的助记词),并全权负责其安全。公钥和地址在本地派生,任何第三方都无法访问签名能力。
权衡是显而易见的。托管解决方案方便,但引入了交易对手风险:如果交易所被黑客攻击、破产或冻结提款,用户的资金将面临风险。自我托管消除了交易对手风险,但引入了操作风险:如果用户丢失助记词、存储不当或遭受网络钓鱼,资金将永久丢失。
多重签名设置通过在多方或设备之间分配密钥管理来折中。2-of-3多重签名要求三个私钥中的任意两个签署交易,因此丢失一个密钥不会导致永久丢失,且泄露一个密钥也不会让攻击者获得控制权。
本文未涵盖的内容
本文不涵盖后量子密码学方案,如基于格的签名,这些方案正在研究作为椭圆曲线密码学的替代品,以防大规模量子计算机变得可行。本文不涵盖超出概念层面的椭圆曲线数学。本文不涵盖具体的钱包设置指南,因为这些因产品而异且频繁变化。
保护密钥的实用检查
切勿分享您的私钥或助记词。任何合法服务、支持代理或空投都不会要求您提供这些信息。任何索取这些凭据的请求都是骗局,无一例外。
发送前验证地址格式。剪贴板恶意软件可以将复制的地址替换为攻击者的地址。粘贴后,务必目视确认地址的前几个和后几个字符。
对于大额资产,请使用硬件钱包。硬件钱包在专用芯片上生成并存储私钥,该芯片永远不会将私钥暴露给连接互联网的设备。在购买前,请研究制造商在熵生成方面的记录。
尽可能添加自己的熵。一些硬件钱包允许用户通过手动输入随机性(如抛硬币或掷骰子)来补充设备的随机数生成器。这降低了硬件随机数生成器存在缺陷的风险。
将助记词备份保存在多个安全位置。仅存放在一个位置的单一副本容易受到火灾、水灾或盗窃的影响。金属助记词备份比纸质备份更能抵抗环境损害。
什么是加密货币中的公钥?
公钥是通过椭圆曲线乘法从私钥派生出的一个大数。它作为密码学身份,用于验证交易签名,而不会泄露私钥。任何人都可以看到公钥,分享公钥不会危及资金安全。
公钥和钱包地址是一样的吗?
不是。钱包地址是通过一轮或多轮密码学哈希从公钥派生出来的。地址更短,更容易分享。在比特币中,根据使用压缩还是非压缩公钥,同一个私钥可以产生不同的地址。
如果别人知道我的公钥,能偷走我的加密货币吗?
不能。公钥设计为可分享的。从公钥推导出私钥需要解决椭圆曲线离散对数问题,而目前的计算技术没有已知的高效解决方案。
如果我丢失了私钥会怎样?
与该密钥相关的资金将永久无法访问。没有恢复机制,因为加密货币网络没有存储备份的中心化权威机构。这就是为什么助记词备份对于自我保管钱包至关重要。
公钥和私钥有什么区别?
私钥是随机生成的秘密数字,用于签署交易。公钥是从私钥派生的,用于验证签名。私钥必须保密;公钥可以自由分享。
助记词与公钥和私钥有什么关系?
助记词(12或24个单词)编码了钱包中所有私钥确定性派生的主熵。每个私钥产生相应的公钥和地址。保护助记词就保护了钱包将生成的所有密钥对。
比特币和以太坊使用什么椭圆曲线?
比特币和以太坊都使用secp256k1椭圆曲线。它产生256位私钥和512位非压缩公钥(或257位压缩公钥)。选择该曲线是因为其效率和已被充分理解的安全特性。
量子计算机能破解公钥密码学吗?
理论上,运行Shor算法的足够强大的量子计算机可以从公钥推导出私钥。然而,截至2026年,还没有这样的量子计算机存在。从未用于发送交易的地址没有在链上暴露其公钥,这增加了一层保护。后量子签名方案正在研究作为未来的替代方案。






