I am aware how to convert the private key into WIF format in python, now I am trying to reverse this process and convert a WIF formatted private key back into a 256-bit private key, following this guide: https://en.bitcoin.it/wiki/Wallet_import_format This is the code to convert from 256-bit private key into WIF format: import hashlib import base58 import binascii private_key_static = "0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D" extended_key = "80"+private_key_static first_sha256 = hashlib.sha256(binascii.unhexlify(extended_key)).hexdigest() second_sha256 = hashlib.sha256(binascii.unhexlify(first_sha256)).hexdigest() # add checksum to end of extended key final_key = extended_key+second_sha256[:8] # Wallet Import Format = base 58 encoded final_key WIF = base58.b58encode(binascii.unhexlify(final_key)) print (WIF) Now my attempt to reverse this process looks like this: import hashlib import base58 import binascii private_key_WIF = 5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ first_encode = base58.b58decode(binascii.hexlify(private_key_WIF)) print (first_encode) Instead of receiving the byte string, I get following error: TypeError: a bytes-like object is required, not 'str' (All private keys used are sample keys taken from Bitcoin Wiki.)