【问题标题】:Is there any function to Encrypt password other than EncryptByPassPhrase and master key?除了 EncryptByPassPhrase 和主密钥之外,还有其他加密密码的功能吗?
【发布时间】:2019-08-18 23:21:48
【问题描述】:
  1. 我必须加密数据库表中的密码。
  2. 在存储过程中(用于登录)密码将作为输入,我需要在过程中加密该密码并与我的数据库表中的加密密码匹配。
  3. 我不应该解密密码。

我尝试了 EncryptByPassPhrase 进行加密,但这里的问题是每次它都会生成一些新的随机数。所以当我尝试加密输入密码时,它会生成一个不同的加密密码,并且它与我的数据库表中的加密密码不匹配

【问题讨论】:

  • 除非这些是第 3 方登录的密码,否则您不需要加密它们,但要hash them with salt.
  • 感谢您的回复@ZoharPeled。但我的要求就是这样。我可以通过使用 HASHBYTES('SHA2_512', 'password') 函数来做到这一点。
  • Hash+salt 不是个好主意!

标签: sql-server tsql encryption password-encryption


【解决方案1】:

可以通过使用 HASHBYTES('SHA2_512', 'password') 来实现,每次都进行相同的加密。

【讨论】:

  • 阅读 zohar 发布的链接 - 如果不加盐,这是不安全的。
  • 这将为相同的密码提供完全相同的哈希码。并且容易受到彩虹表攻击。这就是我们使用盐的原因。为了您的用户密码安全,请阅读这篇文章。
【解决方案2】:

有一个现成的 SDK (Virgil Security PureKit SDK) 是密码强化加密 (PHE) 协议的实现——一种强大且革命性的加密技术,可提供更强大和更现代的安全性,保护用户的数据并减少与弱密码相关的安全风险。

PureKit SDK 允许开发人员与 PHE 服务交互,以保护数据库中的用户密码和敏感的个人身份信息(PII 数据)免受离线/在线攻击,并在您的数据库遭到入侵时使被盗密码/数据变得无用。 Virgil 和攻击者都不知道用户的密码/数据。

【讨论】:

  • 官方文档可见here
猜你喜欢
  • 1970-01-01
  • 2018-08-06
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 2015-03-14
  • 1970-01-01
  • 2021-11-02
相关资源
最近更新 更多