Ich steh gerade total auf dem Schlauch!
Ich will eine Funktion schreiben, die mir 16 Zeichen lange Keys generiert (natürlich möglichst zufällig). Das ist ja an sich nicht schwer. Was mich grade richtig zum Nachdenken bringt, ist, dass dies auch symmetrisch sein soll.
Ich soll also 16 Zeichen eingeben können und herausfinden, ob das ein gültiger Key ist.
Allerdings weiß ich überhaupt nicht, wie das gehen könnte. Ich habe nicht mal einen Ansatz.
Und im Internet habe ich bereits nachgeguckt, das ist schon zu 99,99% mit "KeyGenerator für App" zugemüllt.
mit Hashes kann ich leider nicht arbeiten.
Ich habe nur "ansatzweise" eine "Idee" gehabt, aber bei Weitem kein zufriedenstellendes Ergebnis:
Das Problem ist, dass jeder generierte Key mit "57486c61656" anfängt.
Außerdem gibt es hierbei nur 94*94 Variationen, die Variationen sollen aber mindestems im Milliardenbereich liegen.
Hat irgendjemand eine Idee oder kann mich auf eine Seite verweisen?
Ich will eine Funktion schreiben, die mir 16 Zeichen lange Keys generiert (natürlich möglichst zufällig). Das ist ja an sich nicht schwer. Was mich grade richtig zum Nachdenken bringt, ist, dass dies auch symmetrisch sein soll.
Ich soll also 16 Zeichen eingeben können und herausfinden, ob das ein gültiger Key ist.
Allerdings weiß ich überhaupt nicht, wie das gehen könnte. Ich habe nicht mal einen Ansatz.
Und im Internet habe ich bereits nachgeguckt, das ist schon zu 99,99% mit "KeyGenerator für App" zugemüllt.
mit Hashes kann ich leider nicht arbeiten.
Ich habe nur "ansatzweise" eine "Idee" gehabt, aber bei Weitem kein zufriedenstellendes Ergebnis:
Java:
private static final String PREFIX = "XyZz";
public static String generateKey() {
String s = randomString();
String base64 = DatatypeConverter.printBase64Binary( s.getBytes() );
byte[] b = base64.getBytes();
String key = new BigInteger( 1, b ).toString( 16 );
return key;
}
public static boolean valid(String key) {
byte[] b = new BigInteger( key, 16 ).toByteArray();
System.out.println( Arrays.toString( b ) );
String orig = new String( b );
orig = new String( DatatypeConverter.parseBase64Binary( orig ) );
return orig.startsWith( PREFIX );
}
public static String randomString() {
String ret = PREFIX;
ret += (char) ( Math.random() * 94 + 32 );
ret += (char) ( Math.random() * 94 + 32 );
return ret;
}
Das Problem ist, dass jeder generierte Key mit "57486c61656" anfängt.
Außerdem gibt es hierbei nur 94*94 Variationen, die Variationen sollen aber mindestems im Milliardenbereich liegen.
Hat irgendjemand eine Idee oder kann mich auf eine Seite verweisen?