所以我只是好奇。
我真的很仰慕Blockchain技术,我也读过比特币使用双SHA-256进行散列。
(据我所知,double sha256本质上是\operatorname{SHA-256}(\operatorname{SHA256}(value)) )。
双SHA-256比SHA-512或任何其他比特币可以使用的散列算法好吗?或者,也许还有其他的替代方案可以为比特币的双SHA-256带来一些好处?
发布于 2021-01-08 21:18:10
比较双sha256和sha512就像比较苹果和橘子一样。首先,sha512的结果是512位的长度。双sha256 (或三重sha256,或四倍sha256)的结果是256位长。
多年来,对于比特币的创建者选择在协议中使用双sha256的原因,一直有很多猜测。一种理论是,这样做是为了减少长度扩展攻击。有关更多信息,请参见https://bitcoin.stackexchange.com/questions/6037/why-are-hashes-in-the-bitcoin-protocol-typically-computed-twice-double-computed。
发布于 2021-01-08 22:55:33
使用双哈希的典型原因是处理扩展长度的攻击。这是因为任何Merkle mgard算法输出其整个状态(例如,SHA-1、SHA-256和SHA-512)都容易受到长度扩展攻击,其中知道哈希的用户可以附加额外的数据并生成有效的哈希。
还有其他算法,如SHA-3和BLAKE2,它们没有这个问题,因为它们使用的是不同的结构。沙-3使用一个大的状态,并且只输出一部分,而BLAKE2修改最后处理的块的输入数据来区分它。缺乏这个问题的设计现在更可取了。
然而,在创建比特币(2008)时,这些算法并不存在,SHA-256是用于安全上下文的标准哈希算法,尽管它有这个弱点。
算法在上下文中是否“更好”取决于一个人的需要。目前,如果需要防范长度扩展攻击,可以选择SHA-3或BLAKE2.如果需要性能,则使用BLAKE2或SHA-256 (如果在相关硬件上加速)。如果需要遵守,则使用SHA-2或SHA-3。有许多标准需要考虑。
在进行设计时,选择可能是负责任和合理的,而且是在这种情况下所能做到的最好选择,即使我们今天宁愿采用不同的算法(因为我们有更好的算法可供选择)。由于SHA-256目前被认为是安全和健壮的,所以现在几乎没有理由改变。如果将来这种情况发生变化,那么可能需要使用不同的算法。
https://crypto.stackexchange.com/questions/87434
复制相似问题