C# SQLite 加密哈希 SHA1
C# SQLite encryption hashing SHA1
我有一个 C# 应用程序和一个 SQLite 数据库。在数据库中,我有一个包含几列的 table。在其中一列中,我有一个从查询中用 SHA1 加密的值。但是我需要像这样在我的 C# 应用程序中使用它:
cmd.CommandText = "Select * from accounts where (username=@username and password=sha1(@password));";
我需要 select 字符串值,以便登录到应用程序。我收到错误:no such function sha1
.
从其他帖子,如:This one,我知道我必须创建另一个函数来使用 sha1 进行散列?但我真的不明白该怎么做..任何人都可以帮助我吗?很抱歉,如果它是重复的,但我没有找到指定的答案。
由于 SQLite 默认不实现任何 sha1
功能,您必须从 SQL 移动密码散列查询您的代码。
意味着您的查询应该是:
cmd.CommandText = "Select * from accounts where (username=@username and password=@password);";
你应该像这样传递密码:
cmd.Parameters.AddWithValue("@password", sha1(password));
并且您应该实现自己的 sha1
函数
using System.Security.Cryptography;
...
string sha1(string input) {
byte[] byteArray = Encoding.UTF8.GetBytes(input);
string result="";
using (HashAlgorithm hash = SHA1.Create()) {
result=Convert.ToBase64String(hash.ComputeHash(byteArray));
}
return result;
}
重要
使用散列函数存储密码被认为不安全,您应该考虑了解 Key Derivation function,阅读维基百科页面将引导您使用 C# 实现此类功能.
我有一个 C# 应用程序和一个 SQLite 数据库。在数据库中,我有一个包含几列的 table。在其中一列中,我有一个从查询中用 SHA1 加密的值。但是我需要像这样在我的 C# 应用程序中使用它:
cmd.CommandText = "Select * from accounts where (username=@username and password=sha1(@password));";
我需要 select 字符串值,以便登录到应用程序。我收到错误:no such function sha1
.
从其他帖子,如:This one,我知道我必须创建另一个函数来使用 sha1 进行散列?但我真的不明白该怎么做..任何人都可以帮助我吗?很抱歉,如果它是重复的,但我没有找到指定的答案。
由于 SQLite 默认不实现任何 sha1
功能,您必须从 SQL 移动密码散列查询您的代码。
意味着您的查询应该是:
cmd.CommandText = "Select * from accounts where (username=@username and password=@password);";
你应该像这样传递密码:
cmd.Parameters.AddWithValue("@password", sha1(password));
并且您应该实现自己的 sha1
函数
using System.Security.Cryptography;
...
string sha1(string input) {
byte[] byteArray = Encoding.UTF8.GetBytes(input);
string result="";
using (HashAlgorithm hash = SHA1.Create()) {
result=Convert.ToBase64String(hash.ComputeHash(byteArray));
}
return result;
}
重要
使用散列函数存储密码被认为不安全,您应该考虑了解 Key Derivation function,阅读维基百科页面将引导您使用 C# 实现此类功能.