Ich habe ein Problem beim Versuch, eine Hash-Zeichenfolge einzugeben c#
.
Ich habe bereits einige Websites ausprobiert, aber die meisten verwenden Dateien, um den Hash zu erhalten. Andere, die für Strings sind, sind etwas zu komplex. Ich habe Beispiele für die Windows-Authentifizierung für das Web wie folgt gefunden:
FormsAuthentication.HashPasswordForStoringInConfigFile(tbxPassword.Text.Trim(), "md5")
Ich muss einen Hash verwenden, um eine Zeichenfolge, die einen Dateinamen enthält, sicherer zu machen. Wie kann ich das machen?
Beispiel:
string file = "username";
string hash = ??????(username);
Sollte ich einen anderen Hashing-Algorithmus verwenden und nicht "md5"?
b.ToString("X2")
?Der schnellste Weg, um eine Hash-Zeichenfolge für Kennwortspeicherzwecke zu erhalten, ist ein folgender Code:
Bemerkungen:
sha
Variablen in ein Klassenfeld umgestaltet werden.quelle
SHA1Managed
Klasse ist nicht sehr teuer. Es verbraucht ungefähr 130 Bytes und initialisiert sie auf einen statischen Wert, aber das ist alles. Daher sollte es in den meisten Fällen kein Leistungsproblem geben.SHA1Managed
istIDisposable
und muss seine Verwendung in einenusing
Block einwickeln .Dispose
besteht darin, den internen Puffer zu löschen. Andernfalls besteht die Gefahr eines Speicherangriffs.SHA1Managed
ist nicht teuer, ich meine, seine Erstellung ist nicht. Auch ein Hashing-Algorithmus ist nicht teuer. Es muss nur (extrem) teuer sein, wenn Sie eine Kollision finden möchten.Ich verstehe den vollen Umfang Ihrer Frage nicht wirklich, aber wenn Sie nur einen Hash der Zeichenfolge benötigen, ist es sehr einfach, diesen zu erhalten.
Verwenden Sie einfach die GetHashCode-Methode.
So was:
quelle
GetHashCode
kein kryptografisch sicherer Hashing-Algorithmus ist. Verwenden Sie mindestens SHA256 oder noch besser BCrypt oder Scrypt für einen sicheren Algorithmus.Ich denke, was Sie suchen, ist nicht Hashing, sondern Verschlüsselung. Mit Hashing können Sie den ursprünglichen Dateinamen nicht aus der Variablen "Hash" abrufen. Mit Verschlüsselung können Sie, und es ist sicher.
Weitere Informationen zur Verschlüsselung in .NET finden Sie unter AES in ASP.NET mit VB.NET .
quelle
quelle
Wenn die Leistung kein großes Problem darstellt, können Sie auch eine der folgenden Methoden verwenden:
( Wenn Sie möchten, dass die Hash-Zeichenfolge in Großbuchstaben geschrieben wird, ersetzen Sie sie
"x2"
durch"X2"
.)oder:
quelle
Der kürzeste und schnellste Weg aller Zeiten. Nur 1 Zeile!
quelle