2011-02-04 38 views
10

我正在寻找在Silverlight客户端和使用WCF的本机代码(C++)服务器之间发送加密数据。我正在考虑使用AesManaged类来加密客户端发回服务器的数据,但是想知道解密。有一个假设,如果AesManaged类是针对AES规范实现的,它应该与任何C++ AES库交叉兼容,但是根据微软(和其他供应商)对规范的“解释”的经验,我认为我应该确认它如果可能的话。使用C++可以在Silverlight中解密数据吗?

我打算建立一个原型,但我希望有人在这方面有经验的人的回答。使用C++/CLI或C#访问AesManaged类不是一种选择,因为我正在处理添加功能的遗留代码。

回答

1

我可以告诉你的是,这很好问,我不能说这个特定的互操作性,但我试图与一个传统软件进行通信,这个软件使用了一个名为AesLib的旧版本机实现,并且我试图使用AesCryptoServiceProvider。他们不会相互交谈,显然是因为AesLib使用了没有IV的模式,或者是静态或确定性IV,我无法发现。

如果您可以获取并引用本机服务器正在使用的AES实现,并在其周围实现与ICryptoServiceProvider兼容的包装器,那么这可能是保证消息完好无损的最佳保证(尽管这可能会导致它自己的问题)。否则,我会确保我拥有关于此实现的所有可发现的信息,因此我可以用相同的方式配置AesManaged。至少需要关键的IV,块大小和模式。

0

我很久以前(在Silverlight 2 Beta中)成功地将C#AesManaged与PHP的AES实现一起使用,所以它肯定是可行的。

但是,您可能要仔细研究诸如IV,填充,块大小和模式等事项,以确保AES匹配的设置。

相关问题