机器码、序列号、认证码、注册码的生成算法(一)

虽然标题列出了很多种“码”,但其实有些是一个意思,只是叫法不一样而已。我所介绍的算法也不是说绝对严谨、不能破解的,它们只是适用于某些场合而已。举个例子,我现在想设计一个长度是24个字符的注册码,但如果你用比较安全的RSA算法来做的话,可能你要用到1024个字节,转成Base64也有170个字符。又比如,认证码的用户都是体力劳动者,但你非要做得顶级黑客都无法攻破,感觉就没有意义了。以下所说的几种认证码,都是我工作过程中遇到过的,把设计方法分享给大家:

 

第一种、设备动态密码

这里介绍的密码是用在那种CPU是单片机、PLC的机器上的。我们会遇到一种这样的情况:在机器的屏幕上,你可以看到一些数据,但如果你想进入高级设置,你就需要输入一个8位的密码。但问题很快就来了,你不小心被别人看到了密码,然后这个密码很快就传播开来了。这样的密码等于没有密码了。所以我们这里提出了这样的设计需求:

(1)密码只能是阿拉伯数字,而且不能太长,一般要求10位以下,否则记不住,或让人感觉厌烦。

(2)密码包含用户信息,系统能知道是谁对设备进行了操作。

(3)密码是动态的,每次都不一样。

(4)密码能够防止恶意篡改。

 

第二种、普通的软件注册码

有几种情况:

(1)软件生成一个机器码,交给开发者,开发者提供一个注册码。

(2)把用户名交给开发者,开发者提供一个注册码。

(3)直接向开发者索取一个注册码。

虽然情况看似不同,但其实算法是基本一致的。而且,很多时候,注册码里面还应包含过期信息。

 

第三种、通过文件去注册

当然,第二种方法把注册码放在文件里就是了。一般情况下,第二种方法的注册码是可抄的,也就是说不会太长,只有数字和少量字母等等。而第三种方法用到的文件,可以存放更多的信息,一般安全性会更高一些。

 

后面的章节详细说明三种场合所使用的算法。

你可能感兴趣的:(算法,注册码,认证码,机器码,序列号,算法)