我们有一个遗留应用程序,它将用户的密码存储在未加密的数据库中。我们已经有一小部分客户加入了这个密码,这对他们来说是一件大事(足够公平)。目前它只是一个SQL Server数据库表中的Nvarchar(100)字段。在传统SQL Server数据库中加密密码字段的简单方法
情况是,我们有多个客户端应用程序访问此数据库并验证此密码。
只想获得有关如何在数据库中实现对此字段加密的建议,而无需重新编写读取它的所有客户端应用程序?改变客户端应用程序并非没有问题,但我们试图尽可能避免这种情况。
任何想法?
OMG,您正在存储密码,并且除了用户投诉之外没有看到问题!对不起,但我很惊讶,任何人仍然存储密码,加密或清除。你有任何想法你有财务责任?更不用说为一家为全球企业开发企业软件的软件公司的研发经理。 – zaph
警告:我不是安全专家,但我不会存储数据库密码(加密或不加密)。相反,我会存储哈希码。在SQL Server中,[HASHBYTES](https://msdn.microsoft.com/ro-ro/library/ms174415.aspx)函数可用于生成此类代码。将这些哈希视为加密的一种方式。当我必须检查一个密码时,首先我要生成哈希码,然后我将这个代码与来自数据库的值进行比较。 –
正确的点。不确定[SQL Server HASHBYTES](https://msdn.microsoft.com/en-us/library/ms174415.aspx)究竟做了什么,它似乎只是为了支持标准哈希值。如果它不被腌制和重复,这是不够的。简单地哈希没有salting留下哈希密码开放彩虹表攻击。 – zaph