0

目前,我正在开发一个.NET 应用程序,该应用程序需要对存储在SQL Server 2008数据库中的数据进行加密。

我使用了 AES 加密,密钥是使用密码和盐组合生成的,这些组合使用PasswordDeriveBytes使用SHA1进行散列。现在,我需要将散列算法更改为SHA256,据我所知PasswordDeriveBytes只接受 MD5 和 SHA1 作为散列参数。我只想知道是否可以使用 PasswordDeriveBytes 来实现 SHA256。

如果没有,出于相同目的,.NET 中的替代内置类是什么?我可以手动实现吗?如果手动实施是唯一的解决方案,我可能需要帮助。提前致谢。

4

1 回答 1

0

另一种选择是Rfc2898DeriveBytes。使用起来更安全,尤其是当您需要超过 20 个字节的输出时。它当然与 PasswordDeriveBytes 不兼容。对于超过 20 个字节的任何值,PasswordDeriveBytes 都会被破坏。不幸的是,PBKDF2 也有一个缺点:它对散列大小上的任何值重复所有迭代。在这种情况下,您可能希望将其与 KBKDF 配对。

因此,如果不恢复到其他库,您似乎无法做到这一点。这就是充气城堡可能出现的地方。它具有 PBKDF2 功能,您可以简单地使用 HMAC 进行初始化,然后您可以使用给定的哈希算法进行初始化。请参阅stackoverflow 问题中 PBKDF2 的使用。您可以简单地将摘要替换为,Sha256Digest并且您应该正在路上。

注意:加密中没有什么是简单的,看来你需要有弹性的源来实现这一点。

于 2013-02-22T09:15:54.690 回答