License是版權(quán)許可證,相當(dāng)于軟件版權(quán)。它屬于知識(shí)產(chǎn)權(quán)的著作權(quán)范疇敦迄,是軟件反盜版、對(duì)正版用戶授權(quán)的一種方式。軟件序列號(hào)(Serial Number, 縮寫是S/N)是軟件授權(quán)給使用者的唯一標(biāo)識(shí)符罚屋。每一臺(tái)機(jī)器都有唯一的序列號(hào)苦囱,這是檢查產(chǎn)品的重要依據(jù),其作用主要是為了防止軟件的非法復(fù)制脾猛、盜版撕彤。
序列號(hào)的生成原理:一般是以計(jì)算機(jī)硬件參數(shù)的唯一ID作為注冊(cè)源,通過一定的算法形成所謂的注冊(cè)碼(s/n)猛拴。即通過對(duì)cpu喉刘、網(wǎng)卡或硬盤ID的加密處理得到軟件序列號(hào)。之所以基于硬件參數(shù)是因?yàn)槠崤鏲pu序列號(hào)是一個(gè)建立在處理器內(nèi)部睦裳、唯一的、不能被修改的編號(hào)撼唾。而硬盤ID是出廠時(shí)生產(chǎn)廠家為區(qū)別產(chǎn)品而設(shè)置的廉邑,用硬盤ID加密主要是利用其唯一和只讀的特性。
序列號(hào)生成器的核心部分是其算法倒谷,當(dāng)前序列號(hào)生成器算法一般是通過硬件參數(shù)獲得機(jī)器碼蛛蒙,然后利用MD5算法對(duì)其加密,得到32或16位MD5編碼渤愁。然后再把編碼分成4份即得到序列號(hào)牵祟。
一、總體設(shè)計(jì)
序列號(hào)生成器產(chǎn)生序列號(hào)的過程分為三個(gè)模塊:提取硬件參數(shù)模塊抖格、生成序列號(hào)算法模塊诺苹、輸出序列號(hào)模塊。
二雹拄、生成流程
1.首先獲取硬件參數(shù)信息收奔,并將隨機(jī)數(shù)作為密鑰。
2.將硬件參數(shù)信息和密鑰經(jīng)過SECP256K1算法處理生成了公鑰滓玖。
3.計(jì)算公鑰的SHA256哈希值
4.取上一步結(jié)果坪哄,計(jì)算PIPEMD160哈希值。同SHA256一樣PIPEMD160也是一種hash算法势篡,由公鑰可以計(jì)算得到公鑰哈希翩肌,而反過來是行不通的。
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所示: