我正在考虑使用WCF在Silverlight客户端和本机代码(C ++)服务器之间发送加密数据。我正在考虑使用AesManaged类来加密客户端发送回服务器的数据,但是想知道解密。假设如果AesManaged类是针对AES规范实现的,那么它应该与任何C ++ AES库交叉兼容,但是考虑到微软(以及其他供应商)对规范的“解释”的经验,我觉得我应该确认它如果可能的话。
我打算制作一个原型,但我希望得到那个已经有过这方面经验的人的回答。使用C ++ / CLI或C#访问AesManaged类不是一个选项,因为我正在处理我正在添加功能的遗留代码。
答案 0 :(得分:1)
我可以告诉你的是,这是好事;我不能说这个特定的互操作,但我试图与一个使用旧的本机实现AesLib的遗留软件进行通信,我试图使用AesCryptoServiceProvider。他们不会互相交谈,显然是因为AesLib要么使用没有IV的模式,要么具有我无法发现的静态或确定性IV。
如果您可以获取并引用本机服务器正在使用的AES实现,并在其周围实现与ICryptoServiceProvider兼容的包装器,那么这可能是您的消息完整到达的最佳保证(尽管这可能会导致其自身的问题) 。否则,我会确保我有关于此实现的所有可发现信息,因此我可以以相同的方式配置AesManaged。您至少需要密钥,IV,块大小和模式。
答案 1 :(得分:0)
我很久以前就已成功使用C#AesManaged和PHP的AES实现(在Silverlight 2 Beta中),所以它当然是可能的。
但是,您可能需要仔细研究IV,填充,块大小和模式等内容,以确保AES的设置匹配。