你可以这样建立在C#中SHA1自定义功能:
[SQLiteFunction(Name = "Sha1", Arguments = 1, FuncType = FunctionType.Scalar)]
public class Sha1 : SQLiteFunction
{
public override object Invoke(object[] args)
{
var buffer = args[0] as byte[];
if (buffer == null)
{
var s = args[0] as string;
if (s != null)
buffer = Encoding.Unicode.GetBytes(s);
}
if (buffer == null)
return null;
using (var sha1 = SHA1.Create())
{
return sha1.ComputeHash(buffer);
}
}
}
此功能可以被称为二进制数据或字符串。字符串在其Unicode代码中被散列。这应该匹配SQL Server。
该函数可以调用这样的:
select sha1('abc')
select sha1(x'010203')
SHA-1是不加密,但密码散列函数。 – Gumbo 2010-07-05 11:32:03
SHA1不是散列密码的好选择,因为它是加速的方式,因此使暴力破解变得容易。看看BCrypt或PBKDF2这样的密钥派生函数,后者是用C#编译的,因为BCrypt库可用。 – martinstoeckli 2012-10-23 12:30:24