1

我正在使用 VB.Net RijndaelManaged(RM) 加密文件,使用RM.GenerateKeyandRM.GenerateIV方法生成密钥和 IV,并使用CryptoStream类加密文件。我计划将此密钥和 IV 保存到文件中,并希望确保我以正确的方式进行操作。我正在组合 IV+Key,并使用我的 RSA 公钥对其进行加密并将其写入文件。然后,要解密,我使用此文件上的 RSA 私钥来获取 IV+Key,将它们拆分并将 RM.Key 和 RM.IV 设置为这些值并运行解密器。

这是完成此任务的最佳方法,还是有保存 IV 和密钥的首选方法?

4

1 回答 1

1

这是一般的想法。然而,IV 不需要保密。只有“密钥”是秘密的。

您可能会考虑为您的文件格式使用像 S/MIME(或其底层加密消息语法)这样的标准。我不确定 Bouncycastle 是否已将其 S/MIME(或 PGP)库移植到 .NET,或者 .NET 是否内置了 S/MIME 支持,但您的平台可能有一个免费库可用。像这样被广泛使用的开源库可能已经过比您自己能够做的更仔细的测试和审查,并且它们实现了由密码学专家设计的协议,因此您不必怀疑您忽略了哪些陷阱。

您描述的模型类似于用于密钥交换的 S/MIME 的“KeyTransRecipientInfo”方法。生成一个对称密钥来加密数据,然后使用每个预期接收者的公钥对该密钥进行加密。加密的密钥和 IV(在本标准中未加密)与有关 CMS 结构中使用的算法的信息捆绑在一起。加密数据可以包含在同一个包中,也可以包含在单独的文件中。

PGP 具有本质上等效的模式。

于 2010-05-17T18:21:47.697 回答