2017-09-20 3 views
0

ich zur Zeit die Grund der Kryptographie lerne, wenn ich über dieses Stück Python-Code kommenHMAC in Nachricht vs HMAC in digest

if self.shared_hash != None: 
      h = HMAC.new(self.shared_hash) 
      hmac = data[:h.digest_size*2] #Get the HMAC part of the message 
      data = data[h.digest_size*2:] # Get the data part of the message 
      h.update(data) 
      if h.hexdigest() != str(hmac, 'ascii'): #HMAC is not right, so raise an error 
       if self.verbose: 
        print("Bad message") 
        print("HMAC from message:",str(hmac,'ascii')) 
        print("HMAC from digest:",h.hexdigest()) 
        print("Not verifying message:",data) 
raise RuntimeError("Bad message: HMAC does not match") 

Seit HMAC die Echtheit einer Nachricht zu überprüfen ist, verstehe ich, es ist wichtig zu überprüfe den HMAC. Aber warum vergleichen wir den HMAC aus der Nachricht und den HMAC aus dem Digest. Was ist der HMAC aus dem Digest? Ist es nur ein Hash einer Nachricht?

Antwort

1

Seit HMAC ist die Echtheit einer Nachricht zu überprüfen, ich verstehe seine wichtig, den HMAC

So zu überprüfen, wie Sie überprüfen Sie, dass die Nachricht authentisch ist?

Wenn Sie eine HMAC-Nachricht erhalten, enthält sie zwei Teile. Die eigentliche Nachricht und das HMAC-Tag. Um nun zu überprüfen, ob die Nachricht authentisch ist, müssen Sie ein HMAC-Tag mit der empfangenen Nachricht und dem geheimen MAC-Schlüssel, den Sie mit dem HMAC-Algorithmus haben, erstellen. Dann vergleichen Sie den erzeugten HMAC mit dem HMAC, der mit der Nachricht geliefert wurde, um zu sehen, ob sie übereinstimmen.

Aber warum vergleichen wir die HMAC von der Nachricht und die HMAC von der Digest.

Um zu überprüfen, ob die Nachricht wie oben beschrieben authentisch ist.

Außerdem, was ist der HMAC aus dem Digest?

Die HMAC, die Sie zum Vergleich mit dem HMAC, die mit der Nachricht kam generiert generiert.