HMAC SHA1 Python 3 vs. Python 2

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Jayson80
User
Beiträge: 3
Registriert: Dienstag 19. September 2017, 12:39

HMAC SHA1 Python 3 vs. Python 2

Beitragvon Jayson80 » Dienstag 19. September 2017, 18:14

Hallo Leute,

ich habe ein kleines Problem und ich bekomme es einfach nicht hin.
Hoffe Ihr könnt mir weiter helfen. Ich versuche gerade eine Websocket
Verbindung mit meiner Loxone Hausautomation aufzubauen. Das
alles in Python 3. Ich muss um eine Verbindung aufzubauen einen
Key (den bekomme ich von der Loxone) zusammen mit meinem Password
und Usernamen hashen und dann wieder senden. Hier ein Auszug aus
dem Manual vom Hersteller:

"create a hash from the desired text (user:pass or visualization password) using
HMAC-SHA1"

Ich habe auf dieser Seite einen funktionierenden Code für Java und Python2 gefunden:
https://mattyboy.net/code/hmac-sha1-jav ... n-and-php/

Hier der Python Code von der Seite:

Code: Alles auswählen

import hmac
import hashlib
key = "0f2100e34b54d50fd0138f300d3497579dae5279"
data = "secret-message"
decodedKey = key.decode("hex")
hmac = hmac.new(decodedKey, data.encode('UTF-8'), hashlib.sha1)
signature = hmac.digest().encode('base64')
print "key =", key
print "data =", data
print "signature =", signature


Den Code habe ich getestet sowohl in Java als auch in Python2. Die Verbindung
kann ich aufbauen wenn ich Python2 verwende. Bekomme dann ein alle Sensordaten
in Echtzeit zurück.

Jetzt aber mein Problem. Mit Python 3 bekomme ich ein anderes Ergebnis raus.
Ich bekomme es einfach nicht hin. Der "decodedKey" ist schon anders. Ich
habe bis jetzt nur mit Python2 zu tun gehabt. Ich benötige es aber in Python3.

Kann mir einer von euch helfen?
Wäre echt klasse.

Viele Grüße

Jayson
Benutzeravatar
__deets__
User
Beiträge: 2142
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: HMAC SHA1 Python 3 vs. Python 2

Beitragvon __deets__ » Dienstag 19. September 2017, 18:20

Ich bin einfach nur den Fehlermeldungen gefolgt, und das hier ergibt denselben Hash fuer mich:

  1. from __future__ import print_function
  2.  
  3. import hmac
  4. import hashlib
  5. import codecs
  6.  
  7. key = "0f2100e34b54d50fd0138f300d3497579dae5279"
  8. data = "secret-message"
  9. decodedKey = codecs.decode(key.encode("ascii"), "hex")
  10. hmac = hmac.new(decodedKey, data.encode('UTF-8'), hashlib.sha1)
  11. signature = codecs.encode(hmac.digest(), 'base64')
  12. print("key =", key)
  13. print( "data =", data)
  14. print( "signature =", signature)
Jayson80
User
Beiträge: 3
Registriert: Dienstag 19. September 2017, 12:39

Re: HMAC SHA1 Python 3 vs. Python 2

Beitragvon Jayson80 » Mittwoch 20. September 2017, 08:46

Hey Super vielen Dank. Habe es getestet und funktioniert.
Die Zeile war es:
decodedKey = codecs.decode(key.encode("ascii"), "hex")

Jetzt passt alles.

Vielen vielen Dank!!!

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder