我最近一直在读一些关于加密的文章,我对保护许可证文件不被篡改很感兴趣。现在,这可能不是最好的方法,在这种情况下,我对建议持开放态度。但我想要保护它的一种方法是简单地加密它。
然而,如果我使用加密,我将需要使用对称密钥,但这提出了一个问题。如果我在源码中存储一个key,使用诸如reflector这样的工具,它真的值得吗?获取初始化向量、盐、密钥等并因此破解加密似乎是一项相当微不足道的任务。有没有办法保护源码中的密钥?或者这是完全错误的方法?
发布于 2009-07-04 15:38:19
如果你想防止篡改,你需要签名/散列,而不是加密。类似的理论-但这意味着你可以用应用程序中的公钥对文件进行验证,而不需要你保存在服务器上的私钥(并用来颁发许可证)。
搜索加密散列/签名。
发布于 2009-07-04 15:25:15
系统客户端上的任何内容都可能受到威胁。
如果你加密你的文件,你也必须以某种方式在你的程序中放置解密密钥。任何拥有十六进制编辑器的人都可以通过你的代码找到这个密钥,然后解密你的许可证文件,还可以为你的系统创建密钥。
互联网激活将是一个很好的方法,但我会看看你是否可以找到第三方来为你做这件事,因为他们已经在这些道路上走了。
也就是说,通过一些AES 256加密来运行您的许可文件不会有什么坏处:)。
发布于 2009-07-04 15:26:03
如果您正在谈论MS/.NET环境,我推荐您使用DPAPI。它是一种API,用于存储受密码保护的数据。然后你可以问我“但是我也有同样的问题”,答案是否定的,因为在这个场景中,你使用用户密码来保护你的数据。因此,要访问您的数据,您必须使用特定的凭据运行您的应用程序。在MS环境下,它是最好的解决方案。
从文档中:
DPAPI专注于为用户提供数据保护。因为它需要密码来提供保护,所以逻辑步骤是让DPAPI使用用户的登录密码,在某种程度上,它确实这样做了。DPAPI实际上使用用户的登录凭据。在用户使用密码登录的典型系统中,登录凭据只是用户密码的哈希。然而,在用户使用智能卡登录的系统中,凭证将是不同的。为简单起见,我们将使用术语user password、logon password或仅password来引用此凭据。
https://stackoverflow.com/questions/1082386
复制相似问题