cdkey和啟用碼的生成

2021-07-03 15:47:17 字數 1701 閱讀 3690

在很多產品中都有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 $`

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 $`」,date +%s%n取當前時間的總秒數和納秒,md5sum 對前面的數值做md5運算,head -c $會取出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 生成 啟用碼

本文章參考於其他部落格,python 生成 200 個啟用碼有幾種方式,以下採用兩種不同的方式來生成啟用碼。利用加密的方式 coding utf 8 import base64 def get code for i in range 10 a 這是第 s i 個啟用碼 b base64.b64enc...

Python 生成啟用碼並存入MySQL

引入pymysql import pymysql 連線資料庫 conn pymysql.connect user root password password database test cursor conn.cursor 執行 mysql語句 cursor.execute create tabl...

Python 如何生成 200 個啟用碼

請用 python 如何生成 200 個啟用碼。啟用碼的格式為asqe 9xrk lqwu qkmt 要求1 使用隨機生成時,生成數字概率為1 5,大寫字母和小寫字母概率各為2 5 要求2 這200個啟用碼,他們各不相同 from random import randint 數字概率1 5 1 大寫...