2013-10-25 59 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

相關問題