我正在使用哪个哈希函数?

如何判断你使用的软件库是FIPS-202 SHA-3还是Keccak-256(如果两者都可能被称为“SHA3”)?

一个简单的方法是使用_test vector_,一个给定输入的预期输出。最常用于哈希函数的测试是_empty input_。如果你使用空字符串作为输入运行哈希函数,你应该看到以下结果:

Testing whether the SHA3 library you are using is Keccak-256 of FIP-202 SHA-3

  1. Keccak256("") =
  2. c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
  3. SHA3("") =
  4. a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a

因此,无论调用什么函数,都可以通过运行上面的简单测试来测试它是否是原始的Keccak-256或最终的NIST标准FIPS-202 SHA-3。请记住,以太坊使用Keccak-256,尽管它在代码中通常被称为SHA-3。

接下来,让我们来看一下Ethereum中Keccak-256的第一个应用,即从公钥生成以太坊地址。