【发布时间】:2014-03-31 11:21:36
【问题描述】:
有没有办法使用用户定义的密钥使用 WinCrypt API 进行 AES 解密?据我了解阅读文档和示例,标准方法是使用 Windows 加密 API 生成随机密钥,将此密钥导出到文件并使用它进行解密。
但我需要允许用户定义自己的加密/解密密码。
【问题讨论】:
-
您是在问WinCrypt 是否支持PBE(基于密码的加密)?我问是因为您显然混淆了 AES 对称密钥(128,192 或 256 位,具体取决于选择的算法)和用户提供的密码(可以是任何密码)。这种 PBE 通常使用摘要算法在昂贵的(故意)迭代次数上完成,以将用户密钥转换为对称算法密钥,并且有标准算法可以做到这一点。
-
@WhozCraig:看来我需要测试服,是的。我可以用 WinCrypt API 做吗?
-
我从未使用过 WinCrypt 来执行 PBE,但如果他们在某种程度上不支持它,我会感到震惊。 key derivation function 以及适当的摘要算法和选择的加密算法(在您的情况下为 AES)应该是所需要的。你总是可以自己编写代码,但我会做一些搜索,看看 API 中是否有对它的原生支持(我假设你也会这样做)。