Necesito saltear y trocear algunas contraseñas para que pueda almacenarlas de forma segura en una base de datos. ¿Tiene algún consejo o idea sobre la mejor manera de hacerlo utilizando Linq to SQL?Contraseñas de salteo y hashing usando Linq To SQL
Respuesta
LINQ to SQL no tiene mucha relevancia en este caso. Puede usar cualquier mecanismo que desee, porque no hará hashing y salar en SQL.
Los pasos para guardar una contraseña iría a lo largo de estas líneas:
- reciben la contraseña como texto plano, junto con la identificación del usuario.
- Generar (y recordar) la sal.
- Combina la sal con el texto de la contraseña, p. anteponerlo o anexarlo.
- Hash el texto resultante con su función de hash
- Almacene el ID de usuario, el hash y la sal en su DB.
Los pasos para verificar una contraseña iría a lo largo de estas líneas:
- reciben la contraseña como texto plano, junto con la identificación del usuario.
- Recupere el hash y la sal de la base de datos para la ID de usuario proporcionada.
- Combine la sal con el texto de la contraseña proporcionada.
- Hash el texto resultante con su función hash.
- Compara el hash de la función con el hash recuperado de la base de datos.
- Si son iguales, la contraseña proporcionada fue correcta.
¿Es común para generar y almacenar sal para cada contraseña, en lugar de tener una sal común para combinar con cada contraseña recibida? De acuerdo, parece "más seguro", pero dado que la sal simplemente está almacenada en la base de datos de todos modos ... Solo me pregunto. – JMD
Sí, definitivamente sales por usuario: considere un atacante con la base de datos de contraseñas codificadas. Con la sal por usuario cada contraseña adivinada que los hashes solo pueden compararse con una entrada, con una sal, puede compararla con todas las contraseñas hash. –
rainbow tablas FTW, cuanta más sal mejor – ShuggyCoUk
dado que está utilizando el .NET y C#, su uso puede utilizar el espacio de nombres System.Security.Cryptography.SHA512Managed para generar el valor hash de la contraseña sal y
Si es para la cuenta de usuario de inicio de sesión que no quiere simplemente sal + hash de la clave, también desea utilizar el estiramiento de la clave según PBKDF2 en el documento RFC2898.
Aquí es API para hacer lo que necesita con ejemplo de uso: https://sourceforge.net/projects/pwdtknet
también crea sal al azar cripto en la longitud especificada
- 1. Actualizar usando LINQ to SQL
- 2. Linq-to-SQL y sp_reset_connection
- 3. Usando LINQ to SQL con Oracle
- 4. Obtenga Id usando LINQ to SQL
- 5. T-SQL IsNumeric() y Linq-to-SQL
- 6. LINQ To SQL Paging
- 7. Cuál es la diferencia entre "LINQ to Entities", "LINQ to SQL" y "LINQ to Dataset"
- 8. LINQ to SQL -
- 9. LINQ to SQL PredicateBuilder
- 10. LINQ to SQL Peculiarities
- 11. IDENTITY INSERT y LINQ to SQL
- 12. Linq-to-SQL ToDictionary()
- 13. LINQ to SQL Pagination y COUNT (*)
- 14. Herramienta SQL to LINQ
- 15. Hashing de contraseñas, sal y almacenamiento de valores hash
- 16. Concurrencia con Linq To Sql y ASP.NET
- 17. Linq-to-SQL y rareza DateTime
- 18. LINQ to SQL distintas y orderBy
- 19. Linq to SQL Group By y Suma
- 20. LINQ to SQL OrdenarPor thenby
- 21. Entity Framework vs Linq to Entities vs Linq to SQL
- 22. Usando LINQ to SQL para crear una base de datos
- 23. ¿Cómo consultar tablas de sys usando LINQ-to-SQL?
- 24. ¿Qué es "Linq to SQL"?
- 25. ¿Está desaprobado LINQ to SQL?
- 26. LINQ to SQL valores predeterminados
- 27. ¿Cómo ansioso cargar datos de hermanos usando LINQ to SQL?
- 28. linq to sql update standard
- 29. LINQ to SQL vs ADO.Net
- 30. LINQ to SQL SOUNDEX - posible?
uso esto: http://encrypto.codeplex.com/ – Omu