2011-02-04 53 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匹配的設置。

相關問題