2013-10-25 4 views
0

Если два пользователя вводят один и тот же пароль, значения в БД будут одинаковыми.Цифровая подпись и идентичные пароли

Любые советы, пожалуйста

#region "Digital Signature" 
public static String EncryptDS (this String dataToEncrypt) 
{ 
    //Convert dataToEncrypt to byte array 
    byte[] plainTextBytes = Encoding.Unicode.GetBytes(dataToEncrypt); 
    //=================================== 
    //Create Crypto Service provides params (24 allows SHA256 hashing alogrithm) 
    CspParameters cspParams = new CspParameters(); 
    cspParams = new CspParameters(24); 
    cspParams.Flags = CspProviderFlags.UseMachineKeyStore; 
    cspParams.KeyContainerName = "TT_KEY"; 
    //==================================== 
    //Generate asymmetric key 
    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cspParams); 
    //===================================== 
    //hash and then encrypt the hash(digitally sign) 
    byte[] sig = rsa.SignData(plainTextBytes, "SHA256"); 
    //===================================== 
    //Return signed encrypt the hash (digitally sign) 
    return Convert.ToBase64String(sig); 
} 

ответ

1

Наилучшая практика для хеширования паролей включает в себя создание достаточно долго соли (случайная последовательность символов), который хранится в базе данных рядом с паролем.

Когда хеширование пароля, сначала соедините его солью. Если у двух пользователей одинаковый пароль, у них будут разные соли, поэтому хеши будут разными. Это также помогает предотвратить использование таблиц радуги/массового скота.

+0

Итак, я использую Hash Salting с цифровой подписью, чтобы избежать идентичных паролей. Благодарим вас за помощь и поддержку. – KekoSha

Смежные вопросы