License是版權(quán)許可證,相當(dāng)于軟件版權(quán)。它屬于知識(shí)產(chǎn)權(quán)的著作權(quán)范疇,是軟件反盜版、對(duì)正版用戶授權(quán)的一種方式。軟件序列號(hào)(Serial Number, 縮寫(xiě)是S/N)是軟件授權(quán)給使用者的唯一標(biāo)識(shí)符。每一臺(tái)機(jī)器都有唯一的序列號(hào),這是檢查產(chǎn)品的重要依據(jù),其作用主要是為了防止軟件的非法復(fù)制、盜版。
序列號(hào)的生成原理:一般是以計(jì)算機(jī)硬件參數(shù)的唯一ID作為注冊(cè)源,通過(guò)一定的算法形成所謂的注冊(cè)碼(s/n)。即通過(guò)對(duì)cpu、網(wǎng)卡或硬盤ID的加密處理得到軟件序列號(hào)。之所以基于硬件參數(shù)是因?yàn)?,如cpu序列號(hào)是一個(gè)建立在處理器內(nèi)部、唯一的、不能被修改的編號(hào)。而硬盤ID是出廠時(shí)生產(chǎn)廠家為區(qū)別產(chǎn)品而設(shè)置的,用硬盤ID加密主要是利用其唯一和只讀的特性。
序列號(hào)生成器的核心部分是其算法,當(dāng)前序列號(hào)生成器算法一般是通過(guò)硬件參數(shù)獲得機(jī)器碼,然后利用MD5算法對(duì)其加密,得到32或16位MD5編碼。然后再把編碼分成4份即得到序列號(hào)。
一、總體設(shè)計(jì)
序列號(hào)生成器產(chǎn)生序列號(hào)的過(guò)程分為三個(gè)模塊:提取硬件參數(shù)模塊、生成序列號(hào)算法模塊、輸出序列號(hào)模塊。

二、生成流程

1.首先獲取硬件參數(shù)信息,并將隨機(jī)數(shù)作為密鑰。
2.將硬件參數(shù)信息和密鑰經(jīng)過(guò)SECP256K1算法處理生成了公鑰。
3.計(jì)算公鑰的SHA256哈希值
4.取上一步結(jié)果,計(jì)算PIPEMD160哈希值。同SHA256一樣PIPEMD160也是一種hash算法,由公鑰可以計(jì)算得到公鑰哈希,而反過(guò)來(lái)是行不通的。
5.將一個(gè)字節(jié)的地址版本號(hào)連接到公鑰哈希的頭部,然后對(duì)其進(jìn)行兩次SHA256運(yùn)算,將結(jié)果的前4個(gè)字節(jié)作為公鑰哈希的校驗(yàn)值,連接其尾部。
6.將上一步結(jié)果使用Base58進(jìn)行編碼,就得到了序列號(hào)。Base58編碼為了讓輸出字符串易于辨別,所以編碼時(shí)故意排除了4個(gè)字符: ‘0’、‘I’、‘l’、‘O’,如果你想生成一個(gè)帶特殊詞綴的地址那就不要帶這4個(gè)符了。
三、驗(yàn)證流程
驗(yàn)證序列號(hào)流程如圖3所示:
