Ich versuche, ein Python-Skript auf Knoten portieren und ich habe auf SHA1 Hashes festgefahren.Portierung Python-Hash-Digest zu Knoten js
Das folgende Python-Code:
import hashlib
user = 'test'
ret = hashlib.sha1(user.encode('utf-8')).digest()
print(ret);
Druckt:
b'\xa9J\x8f\xe5\xcc\xb1\x9b\xa6\x1cL\x08s\xd3\x91\xe9\x87\x98/\xbb\xd3'
Ich brauche einen SHA1-Hash in diesem Format in Knoten. Diese Javascript:
var crypto = require('crypto');
var generator = crypto.createHash('sha1');
generator.update(new Buffer('test'));
console.log(generator.digest('binary'));
druckt
©Jå̱sÓé/»Ó
Wie kann ich Knoten die Ausgabe im gleichen Stil zu produzieren erhalten, wie Python tut? Es ist eindeutig nicht binär oder hex, welches Format hat die Python-Ausgabe?
Die Python-Ausgabe ist eine Bytezeichenfolge, die ASCII für die Darstellung von Bytes im druckbaren 7-Bit-ASCII-Bereich und Hex-Escape-Codes für andere Bytewerte verwendet. In hex sieht es aus wie 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3'. Die JavaScript-Ausgabe ist die Latin-1-Codierung dieser Bytes. –
Sie sehen zwei verschiedene Darstellungen der gleichen Daten '\ xa9' ist' © 'in ISO-8859-1-Codierung. Ihre zweite Zeichenfolge scheint nur abgeschnitten zu sein. –
Python ist in Ordnung, und es ist eine exakte binäre Zeichenfolge, Nodejs Ausgabe wird in nicht binäre konvertiert, wenn Sie console.log verwenden – YOU