首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从序列号生成激活密钥

从序列号生成激活密钥
EN

Stack Overflow用户
提问于 2011-09-22 15:31:32
回答 5查看 9.6K关注 0票数 8

我有具有唯一序列号(字符串增量) ex : AS1002和AS1003的设备。

我需要找出一个算法来为每个序列号生成唯一的激活密钥。

最好的方法是什么?

谢谢!

(必须脱机完成)

EN

回答 5

Stack Overflow用户

发布于 2011-09-22 16:12:20

你在这里有两件事要考虑:

  • 无论生成什么键,都必须能够很容易地输入,所以这就消除了一些奇怪的散列,这可能会产生一些字符,输入起来会很麻烦,尽管这是可以克服的,但这是您应该考虑的事情。
  • 您所说的操作必须在网上完成。

首先,没有办法绝对肯定地说,不管你多么想搞糊涂,也没有人能破译你的密钥生成程序。只需做一个搜索引擎查询“破解Xyz软件”。

这是一场永无止境的长期斗争,因此采取了以服务的形式交付软件的做法,也就是说,在网上,生产者对他们的内容有更多的控制权,并且可以明确地授权和认证用户。在您的情况下,您希望脱机执行此操作。因此,在您的场景中,会有人将您的设备附加到某个系统,而您打算编写此例程的相应软件将根据设备v/s用户输入的序列号进行检查。

基于@sll的回答,考虑到您请求的脱机性质。不幸的是,您最好的方法是生成一组随机代码,并在用户调用时验证它们。

这是一个从另一个方法借来的答案,我也添加了数字

代码语言:javascript
复制
private readonly Random _rng = new Random();
private const string _chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; //Added 1-9

private string RandomString(int size)
{
    char[] buffer = new char[size];

    for (int i = 0; i < size; i++)
    {
        buffer[i] = _chars[_rng.Next(_chars.Length)];
    }
    return new string(buffer);
}

因此,为每个设备生成一个,并将它们存储在某个地方可能是您唯一的选择,因为离线需要考虑。

当设置为创建一个10位字符串时,这个例程会产生这样的字符串,这是相当随机的。

3477

ROT6GRA39O

40 40HTLJPFCL

5M2F44M5CH

CAVAO780NR

8XBQ44WNUA

IA02WEWOCM

EG11L4OGFO

LP2UOGKKLA

H0JB0BA4NJ

KT8AN18KFA

票数 2
EN

Stack Overflow用户

发布于 2011-09-22 15:37:36

如果您的设备有一些无法通过连接编程器或其他设备读取的安全内存,-you可以存储一些密钥代码,然后使用任何哈希算法(如MD5SHA-1/2 )生成哈希:

代码语言:javascript
复制
HASH(PUBLIC_SERIALNUMBER + PRIVATE_KEYCODE)

并将SERIALNUMBER +密钥码存储在本地DB中。

以这种方式:(脱机)

  • 客户端打电话给您并询问激活代码
  • 你想要一台特殊设备的服务器
  • 然后在本地数据库中通过给定的SERIALNUMBER搜索密钥代码,并生成激活代码(即使使用MD5,这将是神圣的,因为长密钥是私有存储在数据库中的)
  • 客户端将激活代码输入设备,设备可以通过自己的SERIALNUMBER和密钥代码生成散列,然后将其与用户输入的激活代码进行比较

如果设备上有安全内存(就像SmartCards那样),可以通过存储激活代码本身来简化这一点。通过这种方式,您可以只保留自己的SerialCode - ActivationCode对数据库。

票数 1
EN

Stack Overflow用户

发布于 2011-09-22 15:40:04

到目前为止,最安全的方法是拥有一个由(序列号、激活密钥)对组成的集中式数据库,并让用户在互联网上激活,这样您就可以在本地(在服务器上)检查密钥。

在这个实现中,激活密钥可以是完全随机的,因为它不需要依赖于序列号。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7517399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档