Estoy convirtiendo una librería antigua de node.js en python y no puedo reproducir el comportamiento de Buffer.toString() en python.
esta biblioteca se usa en un entorno de nodo 6.0.0
Eché un vistazo a este problema de nodo , pero no entiendo si está relacionado con mi problema.
función js:
const KDF_PARTY_V = Buffer.from('E6F8C08930597B47472620568D207A23E4FCEF4B3F0AA3DC26FF369C622C6E1D', 'hex').toString('binary') // The SHA-256 hash of your ID string literal; 32 bytes in size. console.log(KDF_PARTY_V)producción:
æøÀ0Y{GG& V z#äüïK? £Ü&ÿ6b,nequivalente de pitón:
kdf_v = memoryview(bytes.fromhex('E6F8C08930597B47472620568D207A23E4FCEF4B3F0AA3DC26FF369C622C6E1D')).tobytes().decode('latin-1') print(kdf_v)la salida (mal mostrada por la pila)
æøÀ‰0Y{GG& V z#äüïK? £Ü&ÿ6œb,n Mi mensaje de consola real:
¿Quizás debería usar algo diferente a latin-1 y utf-8?
fue solo un error de codificación de caracteres de la consola
al mirar los datos binarios en sí, la versión de python es la misma que la de js, así que:
kdf_v = bytes.fromhex(merchant_id).decode('latin1')funciona perfectamente
@AKX necesito tener la variable en formato str, porque la uso en una concatenación y el resultado en un resumen sha256
Simplemente no intentes decode en absoluto. La decodificación convierte cadenas de bytes en cadenas de texto, y un hash no es una cadena de texto.
kdf_v = bytes.fromhex('E6F8C08930597B47472620568D207A23E4FCEF4B3F0AA3DC26FF369C622C6E1D') le proporciona un objeto de bytes de 32 bytes, que es funcionalmente equivalente a un Buffer de Node.js.