Je développe un site Web qui oblige les utilisateurs à s'y inscrire afin d'utiliser ses fonctions et je me demandais si le sel SHA-256 + (sel aléatoire fourni par RNGCryptoServiceProvider en C #) est sécurisé et suffisamment bon pour être utilisé en 2017?
Pour le stockage des mots de passe, les hachages salés SHA256 sont non recommandés . En effet, le SHA256 à usage général est conçu pour être rapide. Rapide est exactement ce que vous ne voulez pas d'un algorithme de hachage de mot de passe, car il rend les attaques par force brute et par dictionnaire beaucoup plus efficaces.
Les hachages de stockage de mot de passe sont conçus pour nécessiter une certaine charge de travail et, dans certains cas, un minimum de mémoire. Un bon schéma de stockage des mots de passe est conçu pour être difficile à sérialiser et/ou à optimiser.
Le schéma de stockage de mot de passe recommandé en 2017 est le hachage BCrypt, avec PBKDF2 comme option alternative, mais un peu moins considérée.
Pour une réponse plus complète, veuillez lire la sec.se 'réponse standard' sur le hachage de mot de passe par Thomas Pornin .
Cela pourrait être - s'il répond à votre évaluation des risques pour les menaces potentielles auxquelles vous vous sentez confronté.
Mais je vous recommande d'utiliser une fonction de dérivation basée sur un mot de passe. Ce sont des fonctions de style basées sur le hachage, idéales pour le stockage des mots de passe.
Regardez dans PBKF # 2 pour votre application C #. Il y a aussi le Bcrypt largement utilisé (bien que j'utilise l'ancien avec C # car il est natif)
Cela peut être utile: https://lockmedown.com/hash-right-implementing-pbkdf2-net/
Mais je vous recommande de vérifier la documentation MSDN pour des informations à jour.