我有一种创建哈希密码的方法。 然而它在salt.CopyTo崩溃(pwd,0); 说目标字节[]太小了。 我该如何解决这个问题?
public static byte[] CreateHashedPassword(string password, byte[] salt)
{
SHA1 sha1 = SHA1.Create();
byte[] pwd = CustomHelpers.StringToByteArray(password);
salt.CopyTo(pwd, 0);
sha1.ComputeHash(pwd);
return pwd;
}
答案 0 :(得分:9)
您需要创建一个包含salt和密码的较长字节数组:
byte[] result = new byte[salt.Length + password.Length];
salt.CopyTo(result, 0);
password.CopyTo(result, salt.Length);
答案 1 :(得分:1)
也许是这样的?
public static byte[] CreateHashedPassword(string password, byte[] salt)
{
SHA1 sha1 = SHA1.Create();
byte[] pwd = CustomHelpers.StringToByteArray(password);
byte[] pwdPlusSalt = new byte[salt.Length + pwd.Length];
salt.CopyTo(pwdPlusSalt, 0);
pwd.CopyTo(pwdPlusSalt, salt.Length);
return sha1.ComputeHash(pwdPlusSalt);
}
答案 2 :(得分:0)
盐有多大?您打算将添加到密码吗?
以下是如何将其添加到密码的开头:
byte[] pwdAndSalt = new byte[pwd.Length + salt.Length];
for (int i = 0; i < pwdAndSalt.Length; i++)
{
if (i < salt.Length)
{
pwdAndSalt[i] = salt[i];
}
else
{
pwdAndSalt[i] = pwd[i - salt.Length];
}
}