关于"\x19Ethereum Signed Message:\n32"前缀的含义及使用咨询
关于
\x19Ethereum Signed Message:\n32前缀的解析 定义
这个前缀是以太坊EIP-191规范中定义的标准化消息签名标识,用于区分链上交易签名与离线消息签名:
\x19:单字节十六进制标识,对应ASCII的EM控制字符,用于标记这是结构化的签名消息,避免被误识别为交易数据。Ethereum Signed Message::明文描述,明确该签名属于以太坊生态下的消息签名场景。\n32:\n是换行分隔符,32表示后续待签名的消息哈希长度固定为32字节(以太坊默认使用Keccak-256哈希,输出长度为32字节)。
使用原因
- 防范签名复用攻击:以太坊交易与离线消息的底层签名算法相同(ECDSA),若无前缀,攻击者可将用户对普通消息的签名伪装成交易签名发起恶意转账。添加前缀后,交易与消息的签名输入完全不同,无法跨场景复用。
- 统一验证逻辑:所有以太坊钱包、合约都遵循该规则,确保不同系统间的签名验证行为一致。比如Solidity中使用
ecrecover验证签名时,必须先拼接该前缀与消息哈希,再计算最终哈希才能正确恢复签名者地址。 - 明确签名上下文:让签名者清晰知晓自己签署的是离线消息而非链上交易,降低被诱导签署恶意交易的风险。
内容的提问来源于stack exchange,提问作者juice
相关产品推荐
相关产品推荐

