2017-05-18 2 views
1

Ich versuche, einige NodeJS-Code nach Python 3 portieren, aber ich habe Probleme mit einem SHA1-Hash, um sich identisch zu verhalten.Unterschied zwischen NodeJS und Python Hashing

Dieser Code in jeder Sprache zeigt das Problem:

NodeJS

var crypto = require('crypto'); 
crypto.createHash('sha1'); 
var h = crypto.createHash('sha1'); 
h.update(new Buffer('pXHepU2vIdYJuIAN', 'base64').toString('binary')); 
console.log(h.digest('hex')); // ea70f5b1ec762290cefd37bc0f9a7421dcc93466 

Python 3

import hashlib 
import base64 
h = hashlib.sha1() 
h.update(base64.b64decode(b'pXHepU2vIdYJuIAN')) 
print(h.hexdigest()) # 74161d2d37d9fff312dd396d5f779133c4bfd88d 

Ich glaube, ich bin mit dem Python-Eingang in den falschen vorbei Format, als ob ich die 10 aus dem NodeJS-Code entfernen, die es entspricht.

Könnte mir jemand erklären, was der Python-Code sein sollte und warum sie sich anders verhalten?

+0

Vergleichen Sie die Daten vor dem Hashing, suchen Sie nach Leerzeichen oder Zeilenumbrüchen. –

Antwort

1

Der Python-Code wie folgt aus:

import hashlib 
import base64 

h = hashlib.sha1() 
h.update(base64.b64decode(b'pXHepU2vIdYJuIAN').decode('latin1').encode()) 
print(h.hexdigest()) #result is ea70f5b1ec762290cefd37bc0f9a7421dcc93466 

Ich habe auf diese Frage verwiesen Nodejs crypto vs python hashlib

Hoffe, dass es Ihnen hilft.

Verwandte Themen