cdkey和激活码的生成

原创 2015年07月06日 19:25:18

      在很多产品中都有cdkey或者激活码需求,这就牵扯到cdkey的生成。cdkey(或激活码,后面已cdkey代替)一般都是由固定长度的一串数字和字母组成,生成的方法有很多,好比最简单的一种就是在26个字母和10个数字中随机抽取一个,然后重复N次,这样就生成了一个长度为N的cdkey。下面介绍一种简单实现的方法,直接上代码:

  1 #!/bin/sh
  2 CDKeyLen=10
  3 CDNum=10
  4 MYSQLCmd="mysql -h127.0.0.1 -P3306 -uroot -p123456 -Dmydb --default-character-set=utf8 -N -s -e"
  5 i=0
  6 while((i<$CDNum))
  7 do
  8     cdkey=`date +%s%N | md5sum | head -c ${CDKeyLen}`
  9     cnt=$($MYSQLCmd "select count(*) from cdkey where key='$cdkey'")
 10     if [[ $cnt == "0" ]]; then
 11         i=$(($i+1))
 12         cdkeyid=$($MYSQLCmd "insert into cdkey(key,time) valuse('$cdkey', unix_timestamp(now()));select last_insert_id();")
 13         echo $cdkeyid
 14     fi
 15 done

        其实cdkey的生成就是这句“cdkey=`date +%s%N | md5sum | head -c ${CDKeyLen}`”,date +%s%N取当前时间的总秒数和纳秒,md5sum 对前面的数值做md5运算,head -c ${CDKeyLen}会取出md5生成的一串符号的前CDKeyLen位。代码的总体逻辑就是先生成一个cdkey,然后在数据库中查询这个cdkey有木有已经存在,如果不存在则插入数据库。

        在这里想讨论的还有对mysql数据库的操作,代码第4行设置了访问数据库的各种参数,其中-h后跟数据库ip地址,-P后跟数据库端口,-u用户,-p密码,-D数据库名称,--default-character-set=utf8设置了字符集(如果不设置的话插入中文字符会乱码),-N表示返回的结果中取出了显示名称的那一行(就是第一行),-s表示简单显示结果,-e代表执行后面的语句。例如执行代码mysql -uroot -p123456 -Dmydb -e"select count(*) as count from cdkey",结果会如下:

+-------+
| count |
+-------+
|     5 |
+-------+

        执行代码mysql -uroot -p123456 -Dmydb -N -e"select count(*) as count from cdkey",结果则是:

+---+
| 5 |
+---+

        执行代码mysql -uroot -p123456 -Dmydb -N -s -e"select count(*) as count from cdkey",结果则是:

5

       从上面的结果中可以很容易的看出-N和-s的作用。

[Python]Anaconda连接mysql数据库,生成的200个激活码保存在数据库

Anaconda连接Mysql数据库,主要分为两步:1.安装mysql,这里注意mysql的版本不要超过5.5,可直接在百度栏搜索出现的mysql版本是最新的,要加上版本进行搜索,我给出我下载的链接,...

生成200 个激活码,保存到 MySQL 关系型数据库。

生成验证码效果: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb import random import random imp...

利用随机数生成方法产生激活码,形如12HJ-9Hjf-HHTY-KK8G

产生一个激活码 package jihuoma; //产生激活码:类似于2Hs0-ssKj-9HHo-A55D public class Test { public static void mai...

idear激活码生成

生成idear激活码

Myeclipse生成激活码操作

不多说,直接上code: import java.io.BufferedReader; import java.io.IOException; import java.io.Input...
  • xb12369
  • xb12369
  • 2013年09月03日 09:44
  • 645

如何设计和生成游戏的激活码

游戏的激活码,也叫作奖励码,通常是由字符和数字组成的字符串,用于在游戏的推广阶段发放给玩家,玩家在下载登录游戏之后兑换获得相应的奖励。首先设计我们激活码的规则 字符 + 数字 组成 长度待定 激活码...

myeclipse6.5-8.5_注册码_注册机_激活码生成代码

//使用方法:新建一个.java文件,然后新建一个MyEclipseGen类,复制下面代码,运行程序。生成激活码 import java.io.BufferedReader; import ja...

生成类似激活码的代码(C#)

类似激活码的算法

[Python] 生成200个激活码(优惠券)

第 0001 题:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?思路: 首先要弄...

[python每日一练]--0001:生成激活码

第 0001 题:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?...
  • saya_wj
  • saya_wj
  • 2017年06月16日 17:42
  • 159
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cdkey和激活码的生成
举报原因:
原因补充:

(最多只允许输入30个字)