網上有很多關于pos機注冊軟件,如何使用隨機碼模式實現軟件注冊認證的知識,也有很多人為大家解答關于pos機注冊軟件的問題,今天pos機之家(www.www690aa.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
1、pos機注冊軟件
pos機注冊軟件
隨機注冊碼模式就是只要一個注冊碼,沒有用戶或是硬件系列號作為加密依據,進行一定的變換以后校驗是否為合法注冊碼。該模式的注冊碼可以在任意計算機上使用,不唯一,好處是方便用戶購買。
隨機注冊碼保護實例
設置注冊碼形如“AABBCCDD-02C46-0C7AA-15A59-0BEFS”的格式。隨機注冊碼驗證步驟如下:
注冊碼第一段為軟件的固定標志,此值可以根據自己的需要設置,隨機注冊碼驗證的第一步就是判斷固定標志是否正確。固定標志正確就把后面四段注冊碼轉換成對應的十進制數,用注冊碼第二段與注冊碼第四段相加,用注冊碼第三段與第五段相加。把相加得到的兩個結果進行比較,如果相同,再把其中的一個結果與一個固定的整數值比較,如果相同,說明注冊碼是正確的,不相同說明注冊碼不正確。
示例代碼如下:
uses Registry, Base64Unit;//十六進制轉換成證書function HexToInt(Hex:String): Integer;varI,Res:Integer;ch:Char;beginRes;=0;for I := 0 to Length(Hex)-1 dobeginch:=Hex[I+1];if (ch >= '0') and (ch < '9') thenRes;Res*16+Ord(ch)-Ord('0')else 1f (ch >= 'A') and (ch <- 'F') thenRes:=Res *16+Ord(ch)-Ord('A') +10else if (ch > 'a') and (ch <= 'f') thenRes:Res*16 + Ord(ch) - Ord('a') +10else raise Exception,Create('無效的十六進制字符串');end;Result :-Res;end;fuction Subtzing(BootStr,Chi1dBtr; string):pstringtet;//11分解字符串variremp:integer;beginresult:=rstringList.create;irenp:=pos(Childstr,RootStr);while iTemp>0 do beginif iremp>1 then result.Append(copy(RootStr,1,iTemp-1));delete(RootStr,1,iTemp+length(Childstr)-1);iremp:=pos(ChildStr,RootStr);end;if RootStr<>''then result.Append(Rootstr);end;//保存注冊信息procedure TForml.Button1Click(Sender:Tobject);varReg:TRegistry;beginif Editl.Text=''thenbeginMessageBox(Handle,'注冊碼不能為空!','提示',MB_OK);Exit;end;Reg:=TRegistry.Create;Reg.RootKey:=HKEY CURRENT_USER;if Reg.OpenKey('\\Software\\KE,True) thenReg.WriteString('Ran',Base64Encryption(Edit1.Text));Reg.CloseKey;Reg.Destroy;MessageBox(Handle,'請啟軟件校驗注冊碼!','提示',MB_OK);end;//驗證注冊碼
procedure TForm1.FormCreate(Sender:TObject);varReg:TRegistry;RegCodeStr:String;Str:TStrings;beginStr:=TStringList.Create;Reg:=TRegistry.Create;Reg.RootKey:=HKEY_CURRENT_USER;if Reg.Openkey('\\Software\\KE,False) thenRegCodeStr:=Base64Decrypt(Reg.ReadString('Ran'));Reg.CloseKey;if RegCode='' thenExit;tryStr:=SubStrings(RegCodeStr,'-');if Pos ('-' ,RegCodeStr)<=0 thenExit;if Str[0]<>'Ran' thenExit;if (HexToInt(str[1])+HexToInt(Str[3])=HexToInt(Str[2])+HexToInt(Str[4]))and(HexToInt(Str[1])+HexToInt(Str[3])=99999) thenButton1.Enabled:=False;Str.Free;exceptButton1.Enabled:=True;end;end;
注冊機制作實例
分析上面隨機注冊碼的驗證過程,注冊碼總得有五段,第一段固定,第二、四段相加,第三、五段相加,看相加結果是否相同并與一個固定的值比較。這說明
固定值=第二段+第四段
固定值=第三段+第五段
即 第二段+第四段=第三段+第五段=固定值
后四段注冊碼都是五位數,可以先獲取一個五位數的隨機數K1,用一個大于這個隨機數的固定值D減去該隨機數得到K2.然后用上面的方法獲取另外一個隨機數K3,用相同的固定值D減去隨機數得到K4,這樣就得到了四組數據,并且滿足K1+K2等于K3+K4,同時等于一個固定的值,就是D=K1+K2=K3+K4,按照注冊碼驗證的算法把注冊碼排列出來就是“固定值K1-K3-K2-K4”,這樣就實現了生成注冊碼的過程了。
示例代碼如下:
uses StrUtils;//返回5位隨機數function MakeRandom():String;vari:integer;countStr:string;begincountStr:='';Randomize;for i:=1 to 10 dobeginCountStr:=CountStr+IntToStr(Random(i)+1);end;Result:=CountStr;end;procedure TForm1.Button1Click(Sender:TObject);varOInt1,OInt2:Integer;Tínt1,TInt2:Integer;1:integer;beginMemo1.Clear;for i:=1 to StrToInt(Editl.Text) dobeginOInt1:=StrToInt(LeftStr(MakeRandom,5));OInt2:=99999-0Int1;TInt1:=StrToInt(RightStr(MakeRandom,5));TInt2:=99999-TIntl;Memo1.Lines.Add('PEFINE'+'-'+IntToHex(OInt1,5)+'-'+IntToHex(TInt1,5)+'-'+IntToHex (OInt2,5)+'-'+IntToHex (TInt2,5));end;end;
以上就是關于pos機注冊軟件,如何使用隨機碼模式實現軟件注冊認證的知識,后面我們會繼續為大家整理關于pos機注冊軟件的知識,希望能夠幫助到大家!
