基于预生成的“密钥”C#加密文件

时间:2010-03-26 22:59:27

标签: c# encryption key

我正在努力确定与我的合作伙伴实施简单“许可”系统的最佳行动方案。这个概念是:

根据多个内部硬件组件生成加密值。让客户将此值发送给我们,我们将将其实施到我们的密钥生成器中。一旦我们有了这个,我们就会对许可证添加任何其他限制(用户,过期等)。从那里我们生成一个文件,我们发送给客户,他们可以添加到他们的安装和瞧,快乐的人。

我完成了第一部分。我的下一部分是试图找出我需要使用哪种加密方法。我已经知道Symmetric Encryption几乎是我唯一能走的路线。我发现的大多数信息都涉及.NET已经从其内部方法创建密钥。

这有点背景,我的问题是:“我可以使用哪种加密方法,这可以让我根据客户计算机提供的”id“加密限制?”我顺便用C#写这个。

2 个答案:

答案 0 :(得分:0)

我最近做了一些非常类似的事情。我使用AES根据私钥生成一个值,使用内部客户ID或订单号作为用于加密值的IV。

您可以在第一步使用某种形式的校验和,而不是订单号,因此不会将其存储为IV。这样,如果文件被软管或者他们将软件转移到新计算机 - 无论哪种方式都会使文件无效。

您可能会注意的一点是,您将安装/许可与硬件紧密联系在一起。你不想因为他们升级主板而惩罚合法用户。

答案 1 :(得分:0)

你说你知道你需要对称加密,但你错了。使用对称加密,检查许可证的代码必须能够访问密钥,这意味着如果您的代码是逆向工程的,那么有人不仅可以找出删除支票的位置,还可以生成和销售与您无法区分的许可证密钥。使

使用非对称加密或安全哈希。并且不要尝试使用客户特定的硬件信息作为密钥,而是将其添加或附加到其他数据。您实际上是在创建一个访问控制/权限/特权列表文件,并附带消息验证代码以验证其来源(您)。