我正在研究使用WCF在Silverlight客户端和 native 代码(C++)服务器之间发送加密的数据。我当时在看使用AesManaged类对客户端发送回服务器的数据进行加密,但是想知道解密问题。有一个假设,如果AesManaged类是根据AES规范实现的,则它应该与任何C++ AES库相互兼容,但是鉴于以前有微软(和其他供应商)对规范的“解释”经验,我觉得我应该确认一下如果可能的话。

我打算 build 一个原型(prototype),但我希望从已经在该领域有经验的人那里得到答案。使用C++/CLI或C#访问AesManaged类不是一种选择,因为我正在处理向其添加功能的旧代码。

最佳答案

我只能告诉你的是,问这个问题真是太好了。对于这个特定的互操作性,我无法谈及,但是我试图与使用旧版 native 实现(称为AesLib)的旧版软件进行通信,并且尝试使用AesCryptoServiceProvider。他们不会互相交谈,这显然是因为AesLib要么使用没有IV的模式,要么拥有我无法发现的静态或确定性IV。

如果您可以获取并引用 native 服务器正在使用的AES实现,并在其周围实现与ICryptoServiceProvider兼容的包装器,则可能是最好的保证您的消息完整无缺地到达(尽管这可能会导致自身的问题)。否则,我将确保获得有关此实现的所有可发现信息,以便可以以相同方式配置AesManaged。您至少需要 key ,IV,块大小和模式。

10-07 19:09
查看更多