0

我在 Visual Basic.net 中序列化一个对象并将这个对象保存到文件中。在此过程中,我使用 CryptoStream 使用密码加密对象。我的问题是:检查密码是否正确的最佳方法是什么?

我应该只检查错误号,看看它是否是使用错误密码时返回的数字,还是有一个特定的函数可以用来确定是否使用了正确的密码?

4

1 回答 1

0

密码没有任何“正确”或“不正确”密钥的概念——它们只是根据密钥将一些数据转换为其他数据。从密码的角度来看,每个转换都与任何其他转换一样“正确”。

您可以简单地尝试解析数据并捕获数据无效时发生的错误。这是一种相当常见的方法,但在这种情况下,您需要使解析代码非常健壮。也无法区分损坏和错误密码,这可能是用户界面问题。

另一种方法是使用某种消息身份验证。如果您可以访问它,一个相当简单的选择是GCM 。手动将HMAC应用于密文需要更多的规划,但应该是可能的。这有点困难,因为您必须为密码和 MAC 使用不同的密钥。

于 2013-06-30T13:07:13.793 回答