Message-Signing

比特幣簽名消息中的顯式消息長度

  • January 17, 2018

消息格式為:

length(prefix),prefix,length(message),message
with prefix="Bitcoin Signed Message:\n"

現在我想知道為什麼需要中間的長度(消息),因為它應該能夠從total_length-prefix_length

這裡的一些上下文:https ://github.com/ethereum/EIPs/pull/683#issuecomment-358460381

這是2011 年在比特幣核心中引入的消息簽名邏輯的原始實現的一個怪癖。

當消息被簽名時,它必須在被散列之前被序列化。Bitcoin Core 中的序列化方法在網路、雜湊原像、文件等序列化之間共享,其中大多數需要在數據前面加上一個緊湊大小的 uint,該 uint 指定數據的長度。因此,這些方法將在序列化任何數據時預先設置如此緊湊的 uint。

消息簽名邏輯的實現使用了相同的序列化方法來生成將被散列的原像。因此,必須在字元串前面加上雜湊原像的長度。

引用自:https://bitcoin.stackexchange.com/questions/68844