如何最好地混淆我的C#产品许可证validation码?

如何最好地混淆我的C#.net app产品密钥validation码?

是否足以将其置于“内部密封类CLASSNAME {};” 还是我需要做更多?

谢谢!

internalsealed等访问修饰符与模糊处理或代码安全性无关,它们只是告诉其他类如何与它们进行交互(或不交互)。

在一天结束时,你无法阻止盗版。 一个人创造的任何东西都可以被另一个人打破。 SO上有很多问题涉及产品密钥,保证软件安全等等,如果您使用右上角的搜索机制,可以找到这些问题。 所有的答案都涵盖了一些基本的想法,任何有意义的人都会告诉你:

  1. 只有在你的反盗版措施上付出足够的努力才能使破解软件比打破信用卡方便一点。 如果这真的很难做到,那么您的客户群收费太多了。
  2. 如果你专注于与客户建立积极的关系而不是假设他们是罪犯,他们会更愿意给你钱。
  3. 大多数客户 – 个人,特别是公司 – 没有兴趣打开你的组件并试图弄清楚如何逃避不付钱给你。 对于个人而言,无论如何他们都不会为此付费,因此您不会失去销售; 并且公司不会因某些软件许可证的成本而冒大量现金出现法律问题。

研究公钥/私钥和椭圆密钥加密技术 ,您将找到保护密钥算法的方法,但它只能防止破解密钥 ,而不是绕过密钥

我同意Rex M,你应该考虑使用非对称加密算法,如椭圆曲线密码术来避免密钥。 如果您对商业解决方案感兴趣,请尝试Ellipter – 它使用椭圆曲线并具有一些有用的function,如产品信息和过期数据嵌入生成的串行密钥。

雷克斯是正确的, internal sealed class不会隐藏任何东西。 使用单向加密哈希(例如MD5CryptoServiceProvider )来保护密码和密钥。