【问题标题】:Is data encrypted in Silverlight decryptable using C++?Silverlight 中加密的数据是否可以使用 C++ 解密?
【发布时间】:2011-06-21 01:31:00
【问题描述】:
我正在研究使用 WCF 在 Silverlight 客户端和本机代码 (C++) 服务器之间发送加密数据。我正在考虑使用 AesManaged 类来加密客户端发送回服务器的数据,但想知道解密。假设如果 AesManaged 类是根据 AES 规范实现的,它应该与任何 C++ AES 库交叉兼容,但鉴于之前我认为微软(和其他供应商)对规范的“解释”经验,我应该确认它如果可能的话。
我计划构建一个原型,但我希望得到已经在该领域有经验的人的回答。使用 C++/CLI 或 C# 访问 AesManaged 类不是一个选项,因为我正在处理要添加功能的遗留代码。
【问题讨论】:
标签:
c#
c++
silverlight
encryption
【解决方案1】:
我只能告诉你,问是件好事;我无法谈论这个特定的互操作,但我试图与一个使用称为 AesLib 的旧本机实现的遗留软件进行通信,并且我试图使用 AesCryptoServiceProvider。他们不会互相交谈,显然是因为 AesLib 要么使用没有 IV 的模式,要么具有我无法发现的静态或确定性 IV。
如果您可以获取并引用本机服务器正在使用的 AES 实现,并围绕它实现与 ICryptoServiceProvider 兼容的包装器,那么这可能是您的消息完好无损地到达的最佳保证(尽管这可能会导致其自身的问题) .否则,我将确保我拥有有关此实现的所有可发现信息,以便我可以以相同的方式配置 AesManaged。您至少需要密钥、IV、块大小和模式。
【解决方案2】:
我很久以前(在 Silverlight 2 Beta 中)成功地使用了 C# AesManaged 和 PHP 的 AES 实现,所以这当然是可能的。
但是,您可能需要仔细研究 IV、填充、块大小和模式等内容,以确保 AES 的设置匹配。