gpt4 book ai didi

C#密码加密

转载 作者:行者123 更新时间:2023-11-30 18:53:00 33 4
gpt4 key购买 nike

我在网上找到了一些代码,它们非常适合我正在尝试做的事情。我需要一些可以加密密码、将其保存到数据库并轻松检索的东西。下面的代码几乎可以满足我的所有需求。

        string UserName = txtUser.Text;
string password = txtPass.Text;

string encrKey = "keyvalue";
byte[] byteKey = { };
byte[] IV = {25, 47, 60, 88, 99, 106, 125, 139};
byteKey = Encoding.UTF8.GetBytes(encrKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputArray = Encoding.UTF8.GetBytes(password);

MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byteKey, IV), CryptoStreamMode.Write);
cs.Write(inputArray, 0, inputArray.Length);
cs.FlushFinalBlock();
password = Convert.ToBase64String(ms.ToArray());

SqlCommand cmd = new SqlCommand("INSERT INTO USers (UserName, Password) VALUES (@UserName, @Password)", myConnection);
cmd.CommandType = CommandType.Text;

cmd.Parameters.AddWithValue("@UserName", UserName);
cmd.Parameters.AddWithValue("@Password", password);

SqlDataReader rdr = cmd.ExecuteReader();

我遇到的问题是当密码为 8 个字符或更长时代码出错。我收到此错误:

System.Security.Cryptography.CryptographicException:指定的 key 不是此算法的有效大小。错误在 Cryptostream 行上生成。

我需要使用不同类型的 key 吗?

最佳答案

通常的做法不是在数据库中加密密码,而是对其进行哈希处理。
当用户尝试登录时,您获取他输入的密码,将其散列并与存储在您的数据库中的散列进行比较。

行业标准哈希算法是 SHA-1,它在 .NET 中很容易获得。

为了获得更高的安全性,您在散列中使用“盐”。

您可以在这里阅读更多相关信息:Salting Your Password: Best Practices?

关于C#密码加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6512909/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com