2016-08-11 5 views
0

Ich verwende einen pbkdf2-Algorithmus, um Passwörter zu hashen. Ein zufälliges Salz wird für jedes Passwort erzeugt und die Anzahl der Iterationen wird in festgelegt, damit die Berechnung etwa 1 Sekunde dauert.Abbrechen eines Passworts hashed mit pbkdf2

Ich spare auch Salz und Hash in dem Sambe Puffer:

----------------------- 
    | SaltLen |  4  | 
    ----------------------- 
    | Salt | saltBytes | 
    ----------------------- 
    | HashLen |  4  | 
    ----------------------- 
    | Salt | hashBytes | 
    - --------------------- 

Mein Problem ist, dass dieses Passwort verknüpft ist nicht auf einen Benutzer gehasht (ein Benutzer kann mehrere Passwort hat) und ich brauche das habe Möglichkeit, ein Passwort nur mit dem Passwort selbst zu löschen. Der einzige Weg, den ich sehe, besteht darin, das Passwort zu hacken, um mit jedem Salz in der Datenbank abzubrechen, bis der gleiche Hash gefunden wird, der ewig dauern wird (1 Sekunde pro Salz).

Gibt es einen besseren Weg, das zu tun?

+0

Was bedeutet _ "ein Passwort löschen" _ bedeuten? – 1615903

+0

In diesem Fall ist das Passwort eine Lizenz, und ich möchte es als abgebrochen markieren – mba7

+0

Sie benötigen eine Art von Kennung, um die Zeile zuerst zu suchen. z.B. eine 64-Bit-Ganzzahl, die bei 1, 2, 3 beginnt. Sie könnten sie bei Bedarf an den Anfang des Kennworts anhängen, aber sie wäre in unverhasterter Form. – SilverlightFox

Antwort

0

Es macht keinen Sinn, Lizenzen wie Passwörter zu behandeln.

PBKDF2 & Iterationen sind nur für Prüfungen auf der Clientseite sinnvoll. Auf der Server-Seite erlauben sie nur einen DOS-Angriff auf Ihren Server. Auf jedem Server können Sie einfach eine Verzögerung von 1 Sekunde für jede Anfrage hinzufügen.

Sie müssen sie nicht hashen, da nur Lizenzen in Ihrer Datenbank als gültig betrachtet werden. Es macht keinen Sinn, deinen Server zu hacken und zu stehlen.

Um den richtigen Lizenzeintrag zu überprüfen, müssen Sie nur die Datenbankeintrags-ID der Lizenz der Lizenz selbst voranstellen und Sie wissen genau, welchen Eintrag Sie überprüfen müssen.

+0

aber was kann ich tun, wenn ich Lizenzen erzeugen möchte, die an Kunden gesendet werden, die wie 3 Monate haben, sie zu aktivieren. Wenn jemand auf meine Website hackt, kann er gültige Lizenzen erhalten, die er anstelle des echten Clients verwenden kann. – mba7

+0

Die Datenbank, die Sie in Ihrer Frage vorgeschlagen haben, macht nur Sinn, wenn die Software den Server direkt kontaktiert, um die Lizenz zu überprüfen. Wenn Ihr Design anders ist, hat Ihre Frage einen falschen Eindruck hinterlassen. Wenn Sie offline verifizierbare Lizenzen benötigen, verwenden Sie die asymmetrische Kryptographie und signieren Sie Ihre Lizenz, den Lizenznamen und das Ablaufdatum. – Robert