
先区分钱包与账户
以太坊账户文档区分了账户与钱包:账户承载链上状态,钱包提供交互界面。比特币开发者指南则区分钱包程序与钱包文件,前者处理相关功能,后者保存密钥等信息。理解“钱包加密”时,应先明确讨论的是链上授权机制,还是本地文件保护。
私钥、公钥与数字签名
私钥是需要保密的签名凭据,公钥用于验证对应签名。公钥可由私钥通过规定的数学运算得到;安全性依赖于从公钥反推私钥在计算上不可行。公钥可以公开,并不意味着私钥也能公开。

ECDSA是椭圆曲线数字签名算法。签名把授权凭据与特定消息关联起来,让验证者检查签名是否有效、消息是否被改动。它不负责隐藏消息内容,因此“经过签名”不能理解为“已经加密保密”。

哈希、地址与编码
哈希函数把输入映射为固定长度的摘要,不提供配套的解密过程。以太坊普通外部账户地址的生成涉及公钥的Keccak-256哈希及截取。这个规则有明确适用对象,不能直接套用于所有区块链地址或合约地址。
编码解决数据如何表示的问题。十六进制使二进制数据便于展示;比特币WIF使用Base58Check表示私钥,并包含校验机制。编码和校验都不提供保密性:私钥换成另一种字符形式,仍然属于敏感凭据。
钱包文件加密的保护边界
钱包文件加密用于保护存储中的私钥,通常需要密码才能解锁。这与使用私钥生成数字签名属于不同环节:前者保护保存的数据,后者生成可验证的授权证明。
比特币开发者指南指出,文件加密不能阻止攻击者在解锁过程中捕获密码,或从内存读取已解密的密钥。因此,文件处于加密状态与运行设备可信,是两个需要分别理解的条件。
常见问题与适用条件
所有账户都有私钥吗?不能这样概括。以太坊合约账户由代码逻辑控制,没有自身对应的私钥,不能把普通外部账户的密钥模型直接套用到合约账户。
硬件钱包是一种加密算法吗?它是一类专用签名设备。其作用主要是隔离密钥与签名过程,安全效果仍取决于具体实现及所确认的消息内容。算法名称、密钥保存方式和授权对象,需要分开判断。