我有一个用C#编写的库。我想将它作为DLL分发。但似乎.NET允许对它进行舒适的反编译,因此算法很容易被盗。
我可以用C ++重写它,但我是.NET的新手。因此,主要问题是为C#编写接口。库不是太大,使用线程,网络和一些数学
有没有办法构建一个只能通过反汇编的DLL?或者我最好用C ++编写所有内容并为C#提供接口?反编译C ++比C#更难吗?
答案 0 :(得分:2)
分发给最终用户的所有内容都可以进行逆向工程。您可以增加所需的工作量,但始终可以。如果您的算法真正关键,专有且有价值,并且您仍在进行应用程序设计,并且算法的结果要么不是性能关键的,要么可以分块...那么也许您可以考虑使用Web服务方法。然后,您可以使用一些最强大的行业标准保护来访问您的计算。
答案 1 :(得分:1)
如果您真的担心算法的知识产权,那么您有一些选择。
1)专利算法。我可以听到嚎叫,但这就是你如何以合法的方式保护知识产权。
2)不要将DLL与算法一起提供给用户。在云中托管算法,只允许客户以这种方式访问它。
其他一些我不明白。你说你可以编写C ++,但不知道如何编写C#接口?使用COM。 C#可以使用COM库。或者,用C ++导出函数并编写一个使用PInvoke调用C ++ DLL的.NET互操作库。