如何保护用.Net编写的API

这是SO中关于保护/混淆.Net应用程序的现有问题的变体。

我正在用C#开发一个API,其中包括一些我非常希望保护的算法。 我知道没有哪种方法是完美的,但是普遍接受的方法是什么?

我希望我的客户能够对API进行编码,但我不希望他们对内部的内容进行逆向工程(至少我不想让它们变得容易)。

如果我对代码进行模糊处理,那么这也不会混淆API吗?

我们正在关注smartAssembly的任何想法对产品的评论将不胜感激。

这可能不是您的选择,但请考虑保护算法,不要将它们分发出去。 您能通过Web服务,.asmx或WCF提供处理吗?

AFAIK,没有绝对完美的方法来保护您的代码,但混淆和加密可能会使逆向工程变得更加困难。

混淆它。 混淆工具不会混淆公共API,因为这会破坏依赖它的外部代码。

你提到了smartAssembly。 还有Dotnetreactor , Dotfuscator和一个开源混淆器: sharpobfuscator 。

一个好的代码混淆器将采用不混淆的例外,并且IN GENERAL有一个切换到仅混淆实现细节而不触及公共API(类,属性等)。 所以,如果你编码正确(门面公开,所有实施细节都是非公开的),它应该做得很好。