Die überprüfung der hmac-sha1-Signatur in Java
Ich würde gerne wissen, wie ich überprüfen konnte die Signatur, die ich erstellt. Mein code zum erstellen einer Signatur, die so ähnlich aussieht wie dieses: HMAC-SHA1: Wie man es richtig in Java?
Sende ich die Nachricht, die Signatur und der öffentliche Schlüssel zum verifizieren der Signatur. Öffentliche und private Schlüssel generiert werden, mit KeyPairGenerator. Wie kann ich den public-key habe ich, um zu überprüfen, meine Signatur? Oder vielleicht können Sie schlagen alle guten Bibliotheken für Java, der für die Signierung und die Verifizierung der Signatur, die Nutzung der HMAC-SHA1?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst zu klären, die HMAC code nicht generieren einer Unterschrift. Es ist eine Art von Message Authentication Code (MAC).
Letzterer link erklärt den Unterschied zwischen einer Signatur und einem MAC auf diese Weise:
Also, um zu überprüfen, ob eine HMAC, müssen Sie teilen sich die Schlüssel, die verwendet wurde, zu generieren. Sie würde die Nachricht zu senden, HMAC, und der Empfänger den gleichen Schlüssel, den Sie erzeugt den HMAC. Sie könnten dann mit dem selben Algorithmus zum generieren eines HMAC aus Sie Ihre Nachricht, und es sollte mit dem HMAC Sie gesendet. Öffentliche/private Schlüssel (Assymmetrische) sind für diesen Einsatz nicht gebraucht. Sie müssen zum erzeugen eines symmetrischen Schlüssels (wie AES) und sicher teilen, dass mit den Menschen, die für die Erstellung/überprüfung der HMAC.
Diese Grenzen der HMAC mit
integrity
undauthenticity
Eigenschaften nur, und nichtnon-repudiation
.Obigen Zitat erwähnt, dass hardware-security-Module verwendet werden könnte, um die Durchsetzung der Schlüssel verwenden, und dann konnte man nicht abstreiten, solange es nur eine person könnte den Schlüssel für die Erzeugung des HMAC.
Alternativ könnte man eine hybrid-Ansatz. Verwenden Sie einen gemeinsamen symmetrischen Schlüssel zu generieren der HMAC. Der HMAC am Ende ist ein hash. Sie können dann die Zeichen dieser Hashwert mit Ihrem privaten Schlüssel (anders als die Schlüssel in die HMAC). Eine Dritte Partei, die mit dem symmetrischen Schlüssel und Ihrem öffentlichen Schlüssel verifizieren konnte Sie unterzeichnet die HMAC, und konnte erzeugen Ihre eigenen HMAC mit der Nachricht und den gemeinsamen Schlüssel, um sicherzustellen, dass es abgestimmt. Diese würde Ihnen auch nicht abstreiten.
Wenn Sie diese route gehen möchten, verwenden Sie die Java - Signatur Klasse. Der HMAC-Algorithmus SHA-1 ist, und vorausgesetzt, dass Ihr RSA-Schlüsselpaar wird, könnte die
NONEwithRSA
Signatur-Algorithmus, da die Eingabe bereits eine SHA-1-hash. Oder könntest du Hasch es wieder mit derSHA1withRSA
Algorithmus. Solange Sie generieren die Unterschrift und überprüfen Sie mit dem gleichen Algorithmus, sollte es OK sein.