I am trying to generated the checksum for the mnemonics (BIP39) but can't get the correct value.

I used 3 resources

I can't get the first test vector to work out.

I SHA256 0x00000000000000000000000000000000 into 374708fff7719dd5979ec875d56cd2286f6d3cf7ec317a3b25632aab28ec37bb

The first four bits, which are the checksum bits, are 0b1101

That makes the last 11 bits of seed + checksum 0b00000001101, the last word of the mnemonic. Corresponds to 13 or index 12 "accident". However in the test vector it's index 4 "about".

I get the wrong word for every test vector. Probably a silly mistake. Thanks.


The checksum is expressed in Hex, so I believe the first character '3' represents the first four bits of the checksum string? If so, this is 0b0011. Word "about" is actually index '3' because the word list is 0-indexed (hence all zeroes maps to "abandon").


You are using the wrong byte-order. In big-endian the hash is 0b0011011101000111000010001111111111110111011100011001110111010101100101111001111011001000011101011101010101101100110100100010100001101111011011010011110011110111111011000011000101111010001110110010010101100011001010101010101100101000111011000011011110111011 so the first four bits are 0b0011 = 3 = about

You can find a python implementation of the mnemonic validation here

This site is temporarily in read only mode and not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .