Когда я шифрую код, то добавляю к нему символ (например, букву F). Эта буква и является ключем, даже не ключем, а просто примесью
| Код | procedure TfmRegistration.FormCreate(Sender: TObject); begin Randomize; i:=Random(65); end;
|
| Код | Function TfmRegistration.GenSymbol:String; begin Case i of 0: result:='A'; 1: result:='B'; 2: result:='C'; 3: result:='D'; 4: result:='E'; 5: result:='F'; 6: result:='G'; 7: result:='H'; 8: result:='I'; 9: result:='J'; 10: result:='K'; 11: result:='L'; 12: result:='M'; 13: result:='N'; 14: result:='O'; 15: result:='P'; 16: result:='Q'; 17: result:='R'; 18: result:='S'; 19: result:='T'; 20: result:='U'; 21: result:='V'; 22: result:='W'; 23: result:='X'; 24: result:='Y'; 25: result:='Z'; 26: result:='a'; 27: result:='b'; 28: result:='c'; 29: result:='d'; 30: result:='e'; 31: result:='f'; 32: result:='g'; 33: result:='h'; 34: result:='i'; 35: result:='j'; 36: result:='k'; 37: result:='l'; 38: result:='m'; 39: result:='n'; 40: result:='o'; 41: result:='p'; 43: result:='q'; 44: result:='r'; 45: result:='s'; 46: result:='t'; 47: result:='u'; 48: result:='v'; 49: result:='w'; 50: result:='x'; 51: result:='y'; 52: result:='z'; 53: result:='!'; 54: result:='@'; 55: result:='#'; 56: result:='$'; 57: result:='%'; 58: result:='^'; 59: result:='&'; 60: result:='*'; 61: result:='('; 62: result:=')'; 63: result:='+'; 64: result:='/'; end;//case end;
|
| Код | Function TfmRegistration.Gen(sString:String):String; Var SerialNum : dword; sSerialNum : String; a, b : dword; Buffer : array [0..255] of char; begin//привязываемся к серийному номеру тома (НЖМД) sSerialNum:=sString; {берем серийник винчетстера и кодируем его в код типа ххх-ххх-ххх-ххх заносим эти значения в верхние edit`ы} if GetVolumeInformation('c:\', Buffer, SizeOf(Buffer), @SerialNum, a, b, nil, 0) then begin sSerialNum:=IntToStr(SerialNum); if Length(sSerialNum)>10 then sSerialNum:=Copy(sSerialNum,1,10) else if Length(sSerialNum)<10 then sSerialNum:=Copy(sSerialNum+'0000000000',1,10); // Edit6.Text:=fmMain.Encode(Copy(sSerialNum,1,2)+GenSymbol);//добавляем любой символ Edit7.Text:=fmMain.Encode(Copy(sSerialNum,3,2)+GenSymbol); Edit8.Text:=fmMain.Encode(Copy(sSerialNum,5,2)+GenSymbol); Edit9.Text:=fmMain.Encode(Copy(sSerialNum,7,2)+GenSymbol); Edit10.Text:=fmMain.Encode(Copy(sSerialNum,9,2)+GenSymbol); Edit11.Text:=fmMain.Encode(Copy(sSerialNum,11,2)+GenSymbol); Edit12.Text:=fmMain.Encode(GenSymbol); Result:=Edit6.Text+'-'+Edit7.Text+'-'+Edit8.Text+'-'+Edit9.Text+ '-'+Edit10.Text+'-'+Edit11.Text+'-'+Edit12.Text+'-'+Edit15.Text; end;//if GetVolumeInformation('c:\', Buffer, SizeOf(Buffer), @SerialNum, a, b, nil, 0) then begin end;
|
| Код | Procedure TfmRegistration.UnGe; begin //обрезаем последний символ, так можно делать не только с послешний символом. Edit1.Text:=Copy(fmMain.Decode(Edit6.Text,True),1,2); Edit2.Text:=Copy(fmMain.Decode(Edit7.Text,True),1,2); Edit3.Text:=Copy(fmMain.Decode(Edit8.Text,True),1,2); Edit4.Text:=Copy(fmMain.Decode(Edit9.Text,True),1,2); Edit5.Text:=Copy(fmMain.Decode(Edit10.Text,True),1,2); Edit13.Text:=Copy(fmMain.Decode(Edit11.Text,True),1,2); Edit14.Text:=Copy(fmMain.Decode(Edit12.Text,True),1,2); end;
|
итак, получилось без всяких ключей, маленько перепутал |