J'essaie de porter un script Python sur Node et je suis bloqué sur les hachages SHA1.Port du condensé de hachage python au noeud js
Le code Python suivant:
import hashlib
user = 'test'
ret = hashlib.sha1(user.encode('utf-8')).digest()
print(ret);
Imprime:
b'\xa9J\x8f\xe5\xcc\xb1\x9b\xa6\x1cL\x08s\xd3\x91\xe9\x87\x98/\xbb\xd3'
je besoin d'un hachage SHA1 dans ce format dans le nœud. Ce Javascript:
var crypto = require('crypto');
var generator = crypto.createHash('sha1');
generator.update(new Buffer('test'));
console.log(generator.digest('binary'));
impressions
©Jå̱sÓé/»Ó
Comment puis-je obtenir nœud pour produire la sortie dans le même style que Python fait? Ce n'est clairement pas binaire ou hexadécimal, dans quel format est la sortie de python?
La sortie Python est une chaîne d'octets, qui utilise ASCII pour représenter les octets dans la plage ASCII 7 bits imprimable et les codes d'échappement hexadécimaux pour les autres valeurs d'octet. En hexadécimal, il ressemble à 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3'. La sortie JavaScript est le codage Latin-1 de ces octets. –
Vous voyez deux représentation différente des mêmes données '\ xa9' est' © 'dans le codage iso-8859-1. Votre deuxième chaîne semble juste tronquée. –
python est bien, et c'est une chaîne binaire exacte, la sortie nodejs est convertie en non binaire lorsque vous utilisez console.log – YOU