Winapi 使用用户定义密钥的AES解密

Winapi 使用用户定义密钥的AES解密,winapi,cryptoapi,Winapi,Cryptoapi,有没有办法使用WinCrypt API使用用户定义的密钥进行AES解密?从我阅读文档和示例的理解来看,标准方法是使用Windows加密API生成随机密钥,然后将该密钥导出到文件并使用它进行解密 但我需要允许用户定义自己的密码进行加密/解密。NET库在System.Security.Cryptography命名空间中提供PasswordDeriveBytes正是出于此目的。看起来CryptDeriveKey是WinCryptAPI的等价物。是的,你可以让你的用户选择他们自己的密码,然后让这个函数计

有没有办法使用WinCrypt API使用用户定义的密钥进行AES解密?从我阅读文档和示例的理解来看,标准方法是使用Windows加密API生成随机密钥,然后将该密钥导出到文件并使用它进行解密


但我需要允许用户定义自己的密码进行加密/解密。

NET库在System.Security.Cryptography命名空间中提供PasswordDeriveBytes正是出于此目的。看起来CryptDeriveKey是WinCryptAPI的等价物。是的,你可以让你的用户选择他们自己的密码,然后让这个函数计算加密函数的实际密钥字节花费很多微秒。您的最终用户永远不会错过这几微秒,但是一个暴力黑客如果被拖慢到每秒尝试100万个密码而不是10亿个密码,就会讨厌它,这是应该的。

您是在问WinCrypt是否支持PBE(基于密码的加密)?我这样问是因为您显然混淆了AES对称密钥(128192或256bit,取决于所选的算法)和用户提供的密码(可以是任何密码)。这种PBE通常是用一个摘要算法在昂贵的(有意的)迭代次数上完成的,以将用户密钥转换为对称算法密钥,并且有标准算法可以做到这一点。@WhozCraig:看来我需要PBE,是的。我可以用WinCrypt API来实现吗?我从来没有使用WinCrypt来执行PBE,不过如果他们没有在某种程度上支持它,我会感到震惊。一个合适的摘要算法和选择的加密算法(在您的例子中是AES)应该是所有需要的。您可以自己编写代码,但我将进行一些搜索,看看API中是否有对它的本机支持(我假设您也会这样做)。