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);
}
4

1 回答 1

1

密码散列的最佳实践包括创建一个相当长的盐(随机字符序列),该盐存储在密码旁边的数据库中。

对密码进行哈希处理时,首先将其与盐连接。如果两个用户有相同的密码,他们会有不同的盐,所以哈希值会不同。这也有助于防止彩虹表/大规模暴力破解。

于 2013-10-25T00:56:38.357 回答