序列化对象密码

时间:2013-06-30 11:57:44

标签: vb.net serialization visual-studio-2012 passwords cryptography

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

我是否应该检查错误编号,看是否是使用的密码不正确时返回的编号,或者是否有可用于确定是否使用了正确密码的特定功能?

1 个答案:

答案 0 :(得分:0)

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

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

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