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

时间:2009-02-02 01:38:11

标签: c# .net

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

将它放在“INTERNAL SEALED CLASS CLASSNAME {}中是否足够了”还是我需要做更多?

谢谢!

3 个答案:

答案 0 :(得分:18)

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

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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