【问题标题】:approaches to encrypt password in sql server 2005在 sql server 2005 中加密密码的方法
【发布时间】:2010-01-05 08:34:29
【问题描述】:

大家好,

到目前为止,我正在使用以下语句在 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)

这是一个好的做法或任何其他方法来做到这一点......

【问题讨论】:

    标签: sql sql-server-2005 encryption passwords


    【解决方案1】:

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

    【讨论】:

      【解决方案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)
      

      但是,可能直接在应用程序中生成哈希并且只将哈希密码保存到数据库更容易。

      【讨论】:

      • @gierlik 在 sql server 2005 中使用哈希的任何示例
      • 不要使用 SHA1,这是一个弱散列,认为已死 (valerieaurora.org/hash.html) 使用 SHA-2 或更高版本。
      • HashBytes() 仅提供 MD2、MD4、MD5 和 SHA-1。在应用程序中生成哈希的另一个原因。
      猜你喜欢
      • 2013-09-22
      • 2011-01-10
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多