Estoy siguiendo este enlace , tratando de realizar SHA-256 en una clave pública dada.
Sin embargo, no puedo obtener el resultado esperado.
Estoy usando la biblioteca sha256 en python hashlib
la entrada es
0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6
La producción de la mina es
32511e82d56dcea68eb774094e25bab0f8bdd9bc1eca1ceeda38c7a43aceddce
El resultado esperado en bitcoin.it es
600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408
¿Echo de menos algo?
El resultado que está obteniendo ( 3251...
) es el resultado de sha256 en la cadena 0450...
.
El resultado esperado en bitcoin.it es el resultado de sha256 en los bytes que actualmente están codificados en hexadecimal. Para resolver esto, decodifique hexadecimal antes de codificar su entrada. En Python 2:
import hashlib in_data = "0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6".decode('hex') my_sha = hashlib.sha256() my_sha.update(in_data) output = my_sha.digest().encode('hex')
Eso debería retener output
el valor esperado.
mago de ozzie
b"hexData"
- para Python 3.xJuanDvorak
mago de ozzie
import codecs
, entoncescodecs.encode(codecs.decode("abcdef".encode("utf-8"), "hex")[::-1], "hex").decode()
... En mi opinión, es bastante contraintuitivo, ya que estoy tan acostumbrado a Python 2.7