2009-09-04 44 views
1

我需要一種方法將編譯後的程序集從客戶端傳輸到服務器,並且能夠將其存儲在數據庫或文件中,以便我可以在「到」端獲取這些字節並重新組裝。有沒有辦法做到這一點。爲了澄清,我有一個winforms應用程序,它將生成代碼並根據一些元數據進行編譯。現在我需要能夠將其轉移到網站並以某種方式存儲它,但我不想要一個dll(因爲它可以被解編譯)。然後,我會有一個「服務器」程序,這將加載到內存中。我只能傳輸加密的源代碼,但我想我可以傳輸編譯後的程序集。傳輸或序列化程序集

更多信息:即使在「from」方面,也沒有生成文件,它被編譯在內存中,所以物理dll永遠不會被創建。

+0

如果你在內存中,那麼你爲什麼不嘗試將流轉換爲blob並存儲到數據庫中,並在「到」端檢索它。 – 2010-09-03 15:41:24

回答

1

您如何傳輸加密的DLL?

+0

這將如何工作?你的意思是混淆了嗎? – epitka 2009-09-04 12:33:02

1

您可以使用公鑰密碼術。

客戶端將使用公鑰來加密組件的字節。這些字節將被存儲在數據庫中 - 對沒有私鑰的任何人完全沒有用處。然後,服務器可以讀取這些字節,使用私鑰對其進行解密,然後從解密的字節流中重新構建程序集。

由於您使用的是公鑰加密,即使客戶端遭到破壞,您的祕密(私鑰)也是安全的,因爲它存儲在服務器上。

要了解有關此技術的更多信息,我建議您閱讀this

+0

有沒有關於如何做到這一點的更多信息的鏈接。我用更多的信息更新了我的問題。我想我會使用MemoryStream讀取字節,加密它們,然後通過電線發送它們。在「到」方面,我將如何重組裝配。那麼如果有多個程序集相互引用呢? – epitka 2009-09-04 12:56:14

+0

我已經爲你添加了一個鏈接。 – 2009-09-04 13:01:52

+0

我的問題更多的是關於整個過程的機制,而不是關於密碼學,但感謝鏈接。 – epitka 2009-09-04 13:08:28

2

聽起來好像你想要從內存到內存,並將其傳輸到服務器,然後再將它傳輸到程序集中。

1

我建議你使用二進制序列化器,並將該流傳送到CryptoStream中,該CryptoStream可以設置爲特定的加密模型。然後將輸出流轉儲到您的位置。在進程的運行結束時,解密並反序列化它。如果你想要,你也可以使用DeflateStream,如果你的裝配足夠大,這將節省一些空間。

希望這會有所幫助。如果你想讓示例讓我知道。