Beispielcode für Scrypt und Cryptsharp

8

Ich habe überall in Google gesucht und kann kein Codebeispiel für die Verwendung von Scrypt (für das Hashing eines Kennworts) finden, wenn ich das Cryptsharp verwende Bibliothek.

Können Sie bitte ein Beispiel für das Hashing des Passworts angeben?

    
William Hurst 18.11.2013, 08:15
quelle

2 Antworten

15

Es ist nur ein einziger Anruf , also werde ich Sie begleiten durch die Parameter:

  1. key : Dies ist Ihr Passwort, verwenden Sie UTF-8-Codierung (ohne Byte Order Mark), um Ihr Passwort in ein Byte-Array zu verschlüsseln;
  2. salt : Eine Kette von sicheren zufälligen Bytes, die mit dem Ergebnis der scrypt-Funktion gespeichert werden. 16 Bytes sollten ausreichen;
  3. cost : Der angegebene Vorschlag ist 262144, aber Sie können diesen Wert erhöhen, wenn Ihr Server die zusätzliche Belastung verarbeiten kann;
  4. blockSize : siehe Kosten, der angegebene Vorschlag ist 8;
  5. parallel : Ich würde dies auf 1 belassen, wenn Sie nicht mit Multi-Threading experimentieren wollen;
  6. maxThreads : Im Allgemeinen wird null gut funktionieren;
  7. derivedKeyLength : Nun, das hängt davon ab, dass Kennwörter für Kennwörter ausreichend sein sollten, es ist jedoch unwahrscheinlich, dass Ihr Kennwort mehr als 128 Bit Sicherheit hat.

Sie sollten mindestens das Salz und das Ergebnis speichern. Möglicherweise möchten Sie die Codierung von Base 64 verwenden, wenn Sie sie als Zeichenfolgen speichern möchten.

Ich würde Ihnen empfehlen, ein zusätzliches Stück Daten zu speichern: eine Version Ihres kennwortbasierten Schlüsselableitungsschemas (PBKDF). Sagen wir, stellen Sie es für die Verwendung von scrypt auf 1 ein und verwenden Sie die angegebene Schlüsselcodierung, Salzgröße, Kosten, Blockgröße usw. In diesem Fall können Sie Ihr Schema später aktualisieren (Sie müssen dazu das Passwort des Benutzers angeben) , so müssen Sie dies online tun, so dass Sie mehrere Systeme zur gleichen Zeit in Betrieb haben werden.)

Beachten Sie, dass Sie PBKDF-Funktionsaufrufe verketten können, sodass Sie die ursprüngliche PBKDF-Ausgabe verwenden und diese als Eingabe für die nächste PBKDF verwenden können. In diesem Fall muss der Benutzer das Passwort nicht angeben (dieser Hinweis wurde von CodesInChaos für eine andere Frage übernommen).

    
Maarten Bodewes 18.11.2013, 20:25
quelle
0

@MartebBodewes bietet eine ausgezeichnete Antwort mit sehr weisen zusätzlichen Tipps. Hier ist ein Codebeispiel mit seinen Empfehlungen. Ich würde Ihnen auch empfehlen zu lesen: Ihr Passwort ist zu kurz , was die Wichtigkeit zeigt die Verwendung moderner Kryptographie wie (zum Zeitpunkt des Schreibens) BCrypt oder Scrypt .

%Vor%     
Muhammad Rehan Saeed 12.01.2016 08:54
quelle

Tags und Links