熬至滴水成珠虽然标题列出了很多种“码”,但其实有些是⼀个意思,只是叫法不⼀样⽽已。我所介绍的算法也不是说绝对严谨、不能破解的,它们只是适⽤于某些场合⽽已。举个例⼦,我现在想设计⼀个长度是24个字符的注册码,但如果你⽤⽐较安全的RSA算法来做的话,可能你要⽤到1024个字节,转成Base64也有170个字符。⼜⽐如,认证码的⽤户都是体⼒劳动者,但你⾮要做得顶级⿊客都⽆法攻破,感觉就没有意义了。以下所说的⼏种认证码,都是我⼯作过程中遇到过的,把设计⽅法分享给⼤家:
这⾥介绍的密码是⽤在那种CPU是单⽚机、PLC的机器上的。我们会遇到⼀种这样的情况:在机器的屏幕上,你可以看到⼀些数据,但如果你想进⼊⾼级设置,你就需要输⼊⼀个8位的密码。但问题很快就来了,你不⼩⼼被别⼈看到了密码,然后这个密码很快就传播开来了。这样的密码等于没有密码了。所以我们这⾥提出了这样的设计需求:
(1)密码只能是阿拉伯数字,⽽且不能太长,⼀般要求10位以下,否则记不住,或让⼈感觉厌烦。
(2)密码包含⽤户信息,系统能知道是谁对设备进⾏了操作。
(3)密码是动态的,每次都不⼀样。
泥浆护壁成孔(4)密码能够防⽌恶意篡改。
隔离桩第⼆种、普通的软件注册码
喷淋洗眼器
有⼏种情况:
(1)软件⽣成⼀个机器码,交给开发者,开发者提供⼀个注册码。 (2)把⽤户名交给开发者,开发者提供⼀个注册码。
(3)直接向开发者索取⼀个注册码。
虽然情况看似不同,但其实算法是基本⼀致的。⽽且,很多时候,注册码⾥⾯还应包含过期信息。
大理石粘接剂三维数据采集第三种、通过⽂件去注册
当然,第⼆种⽅法把注册码放在⽂件⾥就是了。⼀般情况下,第⼆种⽅法的注册码是可抄的,也就是说不会太长,只有数字和少量字母等等。⽽第三种⽅法⽤到的⽂件,可以存放更多的信息,⼀般安全性会更⾼⼀些。
后⾯的章节详细说明三种场合所使⽤的算法。