从 SHA1 升级到 SHA2 会破坏 C# 应用程序中的所有内容

Upgrading from SHA1 to SHA2 breaks everything in C# application

我的任务是 checkmarxwhitehat sentinel 安全修复。问题是从 SHA1 更改为 SHA2 不会自动起作用。 new Hash NOT 将匹配所有数百个用户 password 在数据库中 table.

我该怎么办,让每个人更改他们的密码

C# 代码更改:

//SHA1 sha = SHA1.Create();
SHA256 sha = SHA256Managed.Create();

byte[] buff = sha.ComputeHash(Encoding.Unicode.GetBytes(SaltAndPwd));

如您所知,散列是单向的,这意味着无法解密回原始值,并且在不知道原始值的情况下无法进行任何转换。甚至 SHA2 也有 'different' 和更高级的哈希算法。

一个错误的选择是,以不同方式标记在 SHA2 之前注册的用户。但是,使用旧 SHA1 的用户可能会受到黑客攻击,就像 LinkedIn 网站在使用 SHA1 时被黑客攻击一样。

我的想法和你一样。就像我们在大型互联网网站上看到密码更改建议时,只需简单地进行验证旧密码并从用户那里获取新密码等简短过程。

像 SHA2 的 PWDTK 这样的 Nuget 包可能有帮助..