2009-09-04 45 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,如果你的装配足够大,这将节省一些空间。

希望这会有所帮助。如果你想让示例让我知道。