我正在使用WCF在Silverlight客户端和本机代码(C)服务器之间发送加密数据.我正在使用AesManaged类加密客户端发送回服务器的数据,但是正在想知道解密.有一个假设,如果AesManaged类是针对AES规范实现的,它应该与任何C AES库交叉兼容,但是鉴于微软(和其他供应商)对规范的“解释”的体验,以前我觉得我应该确认它如果可能的话.
我计划建立一个原型,但我希望有一个在这方面有经验的人的答案.使用C/C++LI或C#访问AesManaged类不是一个选项,因为我正在处理我添加功能的旧代码.
解决方法
我可以告诉你,这是很好的问题;我不能说这个具体的interop,但我正在尝试与一个使用旧的本机实现称为AesLib的旧版软件进行通信,我正在尝试使用AesCryptoServiceProvider.他们不会互相交谈,显然是因为AesLib使用没有IV的模式,或者有一个我无法发现的静态或确定性的IV.
如果您可以获取和引用本机服务器正在使用的AES实现,并在其周围实现一个ICryptoServiceProvider兼容的包装器,这可能是您的消息完好无损的最佳保证(尽管这可能会导致其自身的问题).否则,我会确保我有关于这个实现的所有可发现的信息,所以我可以配置AesManaged相同的方式.至少需要键IV,块大小和模式.