2016-06-26 6 views
0

Ich arbeite mit einer Anwendung, wenn Benutzer sich in das Programm einloggen können, indem sie ihre Informationen eingeben. Passwörter werden in der Tabelle als verschlüsselt gespeichert. Aber wenn ich versuche, dieses Passwort zum Login verwenden es funktioniert nicht. \C# wpf Sql Tabelle, verschlüsselte Passwörter

Für die Verschlüsselung von Daten Ich benutze diese gespeicherte Prozedur

ALTER procedure [dbo].[inn] 
    @use varchar (50) = null, 
    @ins varchar (50) = null 

AS 


    INSERT INTO [kole].[dbo].[koll] 
     ([Userr] 
     ,[ins]) 


VALUES 
     (@use, 
     ((EncryptByPassPhrase('8', @ins))) 

Und für decrypte verwende ich diese gespeicherte Prozedur

ALTER procedure [dbo].[sle] 
@Use varchar (50) = null, 
@ins varchar (50) = null 

AS 
SELECT Userr,CONVERT(varchar(50),DECRYPTBYPASSPHRASE ('8',ins)) as Password 
FROM [kole].[dbo].[koll] 
where Userr = @Use and ins = @ins 

    GO 

In C# benutze ich diesen Code zum Aufrufen von Daten und loggen mich im Programm ein.

Wie kann ich das Passwort in korrekter Weise entschlüsseln, um es für die Anmeldung im Programm zu verwenden. Danke

+0

Neben dem Problem: dd Sie erwägen, anstelle von Verschlüsselung Hashing? – Caramiriel

+0

Wie kann ich das tun, können Sie mir sagen, mit einem Beispiel, weil ich neu bin – user5827232

+0

Ich denke, diese Websites sagt Ihnen ziemlich, warum und wie (https://crackstation.net/hashing-security.htm/http://www.codeproject.com/Articles/608860/Understanding-and-Implementing-Password-Hashing). Kurz gesagt, es ist besser, das Passwort nicht abrufen zu können, falls die Website irgendwie Informationen verliert. – Caramiriel

Antwort

0

Passwörter sollten nicht verschlüsselt gespeichert werden, da sie abrufbar sind. Stattdessen sollten sie Hashes sein, ein kryptographischer Hash ist eine Einwegfunktion, die nicht umgekehrt werden kann. Bei der Eingabe wird das Passwort gehasht und der Hashwert in den DB eingetragen. Bei der Verifizierung wird das zu verifizierende Passwort auf die gleiche Weise und im Vergleich zum Hash-Wert im DB gehashed.

Mit "Hash" oben ist Folgendes gemeint: Iterate über einen HMAC mit einer zufälligen Salz für etwa eine 100ms Dauer (das Salz muss mit dem Hash gespeichert werden). Verwenden Sie Funktionen wie password_hash, PBKDF2, Bcrypt und ähnliche Funktionen. Es geht darum, den Angreifer dazu zu bringen, viel Zeit mit der Suche nach Passwörtern zu verbringen.

Siehe OWASP (Open Web Application Security-Projekt) Password Storage Cheat Sheet.

Ganz einfach, vorausgesetzt, eine App, die von der Öffentlichkeit verwendet wird und die Benutzer erwarten gute Sicherheit müssen Sie wirklich mit einem Sicherheitsexperten beraten, warten Sie nicht bis nach dem Angriff.

Verwenden Sie schließlich eine gute Zwei-Faktor-Authentifizierung und behalten Sie die Kontrolle über alle Serveradministratoren. .

0

In Ihrem [dbo] [sle] gespeicherte Prozedur, müssen Sie

SET @ins = EncryptByPassPhrase('8', @ins)