Serial It v 1.0_SOLVED

Hi ihr!

Ich bin es mal wieder!
Hab mein erstes SerialMe gemacht, hoffe ist nicht zu schwierig!

Auf Anfrage gibt es 1 Serial, aber nur, wenn es sonst gar nicht geht!


MfG Blacki
 
Eigentlich kein Problem.
Das wär dann ne Zufallsanordnung von jeweils 5 Zeichen ,die in der Summe einen bestimmten Wert haben müssen. Hier mal für Block1:

Code:
procedure TForm1.Button1Click(Sender: TObject);
const
  CHR_FROM = Ord('$');
  CHR_TO = Ord('.');
var
  a,b,i,j: Integer;
  Buffer1: array[0..4] of Char;
begin
  a:=0;
  b:=0; 
  while b <> 180 do begin
  for i := Low(Buffer1) to High(Buffer1) do  begin
      Buffer1[i] := Chr(Random(CHR_TO - CHR_FROM) + CHR_FROM);
  end;
  for j:=1 to length(Buffer1) do
     begin
     a:= ord(Buffer1[j]);
     b:= a+b;
     end;
   end;
edit1.Text := Buffer1;
end;

4-mal hintereinander mit verschiedenen Summen und du hast deine 4 Blöcke.
Leider ist die Brerechnung sehr Zeit-/Rechenintensiv wegen den Zufallszeichen.
Also würde sich ne fixe Serial doch besser machen ;)

Cagiv.
 
Leider ist die Brerechnung sehr Zeit-/Rechenintensiv wegen den Zufallszeichen.
wofür hat man heutzutage 3 GHz Rechner :D ?
Die Summen sind aber imho etwas unglücklich gewählt, weil man dann eher "komische" ASCIIs wählen muss. Nicht desttotrotz:
Endung "Zip" entfernen - jar starten,auf "Generate" drücken und in Konsole "Einfügen" wählen (um sich das abtippen zu ersparen ;) ).
 
HI CDW,

leider hab ich noch keinen 3GHZ Rechner (1,2) ;(
Die Berechnung des Block1 hat bei mir schon mind 3 min gedauert 8o

Ich frag mich ,warum das aber jetzt mit Java so schnell geht ?(
Wo legst du eigentlich die Summenwerte fest?
Hab ich eben nicht gefunden im Code, oder übersehen.


Cagiv.
 
Wo legst du eigentlich die Summenwerte fest?
sie werden dem Konstruktor von "Keygen" übergeben (Aufruf aus der GUI.java - ist zwar etwas unsauber, aber das Projekt ist klein genug :) )
Code:
key.setText(((Keygen)(new Keygen(180,xxx,xxx,xxx))).getKey());
	        	        key.grabFocus();
	        	        key.selectAll();
	        	        key.copy();


Ich frag mich ,warum das aber jetzt mit Java so schnell geht
weil der Algo etwas anders ist:

Code:
 private String getSubKey(int sum)
   {   
	   String subKey="";
	   
	   Random rand=new Random();
	   for (int i=0;i<4;i++)
	   {
		   subKey=subKey+(char)(ASCII_MIN+rand.nextInt((sum/5-ASCII_MIN)));   
	   }
	   subKey=subKey+(char)(sum-(((int)(subKey.charAt(0)+ (int)(subKey.charAt(1))+(int)(subKey.charAt(2))+(int)(subKey.charAt(3))))));
	  
	   return subKey;
   }


zugegeben, das ist wieder recht unschön, ich denke mal das hier wäre verständlicher:


Code:
 private String getSubKey(int sum)
   {   
	   String subKey="";
           int temp_summe=0;
  
	   
	   Random rand=new Random();
	   for (int i=0;i<4;i++)
	   {      
                   int zahl=(ASCII_MIN+rand.nextInt((sum/5-ASCII_MIN))); 
		   subKey=subKey+(char)(zahl);
                  temp_summe=temp_summe+zahl;   
	   }
	   subKey=subKey+(char) (sum - temp_summe);
	   return subKey;
   }

Wenn man die übergebene Summe durch Anzahl der Zeichen teilt(sum/5), bekommt man "das ideale" Zeichen - mit diesem Zeichen kann man schon den Buffer füllen, was aber recht langweilig wäre :). ASCII_MIN ist die "Grenze", ab der die darstellbaren ASCIIs beginnen. Wenn man also diese "ideale" Zeichen minus ASCII_MIN macht (sum/5-ASCII_MIN)), dann hat man den Bereich, in dem man gefahrlos Zeichen generieren kannrand.nextInt((sum/5-ASCII_MIN))). Und zwar nur 4 Stück ( for (int i=0;i<4;i++)). Das fünfte Zeichen wird ausgerechnet: wenn man von der Summe die erreicht werden soll, die bereits erreichbare Summe der Zeichen subtrahiert, bekommt man den nötigen Wert.
Code:
 subKey=subKey+(char) (sum - temp_summe);
Also nur ein Durchlauf - dafür allerdings auch nur eine sehr begrenzte Anzahl von ASCII-Zeichen, die generiert werden (sieht man wohl auch ;) )



Im Anhang der "verschönerte" Code.
 
Sehr Clever gemacht =)
So spart man sich die ganze Zufallsgeschichte.
Ich muss echt creativer werden :rolleyes:


Cagiv.
 
Cool!

Kann mir jemand sagen, wie ihr das mit dem Auslesen gemacht habt?

MfG

Blacki

EDIT: Gecrackt habichs schon!
EDIT2:ICH HABS! cool :D freu, mein erstes SerialME geknackt :D
*freu*


Thx
 
Zurück
Oben