数字签名和相同的密码
本文关键字:密码 数字签名 | 更新日期: 2023-09-27 18:36:45
如果两个用户输入相同的密码,则数据库中的值将相同。
任何建议,请
#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);
}
密码散列的最佳实践包括创建一个相当长的盐(随机字符序列),该盐存储在密码旁边的数据库中。
散列密码时,请先将其与盐连接起来。如果两个用户具有相同的密码,他们将具有不同的盐,因此哈希值将不同。这也有助于防止彩虹表/大规模暴力强迫。