在sql server 2005中加密密码的方法

时间:2010-01-05 08:34:30

标签: sql sql-server-2005 encryption passwords

Hai guys,

到目前为止,我使用以下语句来加密sql server 2005中的密码变量

OPEN SYMMETRIC KEY SecureSymmetricKey1
DECRYPTION BY PASSWORD = N'StrongPassword';

 DECLARE @encrypted_str VARBINARY(MAX)
select @encrypted_str=EncryptByKey(Key_GUID('SecureSymmetricKey1'),@Password)

这是一个很好的做法还是其他任何方法......

2 个答案:

答案 0 :(得分:3)

您可能会在Stackoverflow中的preferred-method-of-storing-passwords-in-database上发现这篇文章也很有用

答案 1 :(得分:2)

如果您的意思是您的应用程序用户密码,那么只需hash and salt用户密码就会更容易(也可能更好)。

有几个原因:

  • 哈希密码是常用做法/标准。
  • 密码不应该从数据库中恢复(即使访问数据库也很难恢复密码)。
  • 数据库不是计算器 - 它是存储引擎(高级引擎,但用于存储数据,而不是计算它们)。

在SQL Server 2005中,有一个函数HashBytes可用。哈希之前不要忘记salt密码。

使用HashBytes的示例代码可能如下所示:

DECLARE 
    @password nvarchar(100),
    @salt AS nvarchar(100)

SET @salt = 'various random characters i.e. #_$a1b'
SET @password = 'my password'

SELECT HashBytes('SHA1', @salt + @password)

然而,可能,直接在应用程序中创建哈希并且只将哈希密码保存到数据库中要容易得多。