我们有一个遗留应用程序,用于将用户密码存储在未加密的数据库中。我们现在有很多客户登机,加密这个密码对他们来说是个大问题(足够公平)。目前,它只是SQL Server数据库表中的Nvarchar(100)字段。
情况是我们有多个客户端应用程序访问此数据库并验证此密码。
只是想获得有关如何在数据库中对此字段实现加密的建议,而无需重写所有读取它的客户端应用程序?改变客户端应用程序并不是不可能的,但我们正试图尽量避免这种情况。
有什么想法吗?
答案 0 :(得分:0)
不要那样做,存储密码的盐渍,迭代HMAC。使用像Bcrypt,password_hash,PBKDF2或类似的东西。
如果HMAC没有盐渍和迭代,那还不够。只需在没有盐析的情况下散列,就可以将散列密码打开,以防止彩虹表攻击。
转换现有密码现在。
答案 1 :(得分:-1)
将配置表添加到数据库以指定是否需要加密密码。默认为“不加密”
在密码表上添加“插入/更新触发器”,并根据配置#1,在插入/更新时加密数据
相应地更改您的申请。
在这种情况下,您仍然在触发器中使用加密算法,并且您需要使用权限使触发器安全。
这些问题需要一些头脑风暴,希望我没有错过任何东西。