SQL查询创建加密密码

时间:2011-05-11 13:02:36

标签: c# sql encryption

我正在尝试在c#中创建一个安全的密码登录界面。现在我刚刚创建了登录界面,我可以从数据库中读取用户名和密码。但我设计的没有加密密码。任何人都可以帮我解决如何编写查询以生成加密密码并将加密密码值存储在单独的字段中。谢谢。

2 个答案:

答案 0 :(得分:2)

您最好的选择是单向加密。

在这种情况下,用户选择/获得密码。当该密码存储在数据库中时,它会在存储之前通过这种单向加密。 (您将在c#代码中执行此操作)

然后,当用户登录时,输入的密码将通过相同的单向加密,然后再与数据库中的密码进行比较。

这确保了如果黑客进入数据库,将难以学习密码,因为他们必须确定加密类型,然后设计一种方法来解密它,这对我的理解是最困难的,最坏的情况是不可能的。

这是一些可能有用的代码链接。 One Way Encryption

你不想在sql本身进行加密,因为如果黑客能够访问你的数据库,他们将能够简单地查看你用来进行加密的过程/函数,他们将有一个更容易的时间。

并且您不希望将密码存储在未加密的数据库中......

最好的办法是编写一些代码来读取密码,加密密码并更新记录,然后你所要做的就是继续使用相同的加密类型和盐。

c#加密库非常易于使用。

答案 1 :(得分:1)

考虑哈希当前存储的密码。 SQL可以按如下方式对密码进行哈希处理:

DECLARE @HashThisPassword nvarchar(4000);
SELECT @HashThisPassword = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf');
SELECT HashBytes('SHA1', @HashThisPassword);

......但SQL甚至不需要这样做。您应该在C#应用程序收到密码后立即对密码进行哈希处理,然后只将哈希密码传递给SQL进行保存。检查用户是否提供了正确的登录密码时,请比较哈希值。