Ich habe folgendes Programm geschrieben:
Wenn ich das Programm ausführe werden mir in der Console acht Passwörter erstellt.
Kann mir jemand einen Tipp geben wie ich diese Passwörter nach Ausführen des Programmes in eine ascii Datei schreiben lasse?
Danke schonmal
Java:
import java.util.Random;
public class Keygen {
static String sLower = "abcdefghijklmnopqrstuvwxyz";
static String sUpper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
static String sDigit = "0123456789";
static String sSpecial = "!\"§$%&/()=?+-,.;:_\\#'*{[]}<>|";
public static char[] generate(char[] acCodebase, int iKeylen)
{
Random rnd = new Random();
char[] acReturn = new char[iKeylen];
int iCodebaseLen = acCodebase.length;
for (int i=0; i<iKeylen; ++i) {
acReturn[i] = acCodebase[rnd.nextInt(iCodebaseLen)];
}
return acReturn;
}
public static void main(String[] args)
{
int iLen = 8;
int iCount = 8;
String sCodebase = "";
boolean bLower = false;
boolean bUpper = false;
boolean bDigit = false;
boolean bSpecial = false;
// Parameter einlesen
for (int i=0;i<args.length; ++i) {
if (args[i].charAt(0) == '-') {
int j=1;
while (j<args[i].length()) {
// Kleinbuchstaben?
if (args[i].charAt(j) == 'l' && !bLower) {
sCodebase += sLower;
bLower = true;
}
// Grossbuchstaben?
else if (args[i].charAt(j) == 'u' && !bUpper) {
sCodebase += sUpper;
bUpper = true;
}
// Zahlen?
else if (args[i].charAt(j) == 'd' && !bDigit) {
sCodebase += sDigit;
bDigit = true;
}
// Sonderzeichen?
else if (args[i].charAt(j) == 's' && !bSpecial) {
sCodebase += sSpecial;
bSpecial = true;
}
// Passwortlaenge?
else if (args[i].charAt(j) == 'n') {
try {
int iTmp = Integer.parseInt(args[i].substring(j+1));
iLen = iTmp;
j = args[i].length();
}
catch (IndexOutOfBoundsException e) { } // do nothing
catch (NumberFormatException e) { } // do nothing
}
// Anzahl Passwoerter?
else if (args[i].charAt(j) == 'c') {
try {
int iTmp = Integer.parseInt(args[i].substring(j+1));
iCount = iTmp;
j = args[i].length();
}
catch (IndexOutOfBoundsException e) { } // do nothing
catch (NumberFormatException e) { } // do nothing
}
// eigene Zeichenmenge?
else if (args[i].charAt(j) == 'f') {
try {
sCodebase += args[i].substring(j+1);
j = args[i].length();
}
catch (IndexOutOfBoundsException e) { } // do nothing
}
// naechstes Zeichen im Parameter
++j;
}
}
}
// Zeichensatz ueberpruefen
char[] acCodebase;
if (sCodebase.equals("")) {
// wenn kein Zeichensatz gesetzt wurde auf Standard setzen
sCodebase = sLower + sUpper + sDigit + sSpecial ;
acCodebase = sCodebase.toCharArray();
}
else {
// mehrfach vorkommende Zeichen entfernen,
// damit die Wahrscheinlichkeit für alle Zeichen gleich ist
int iCodebaseLen = 0;
boolean abData[] = new boolean[256];
for (int i=0; i<256; ++i) {
abData[i] = false;
}
for (int i=0; i<sCodebase.length(); ++i) {
int iValue = (int)sCodebase.charAt(i);
// Achtung: Java verwendet 16bit Unicode!
// => Array-Boundings testen
if (iValue >= 0 || iValue < 256) {
if (!abData[iValue]) {
abData[iValue] = true;
++iCodebaseLen;
}
}
}
int j=0;
acCodebase = new char[iCodebaseLen];
for (int i=0; i<256; ++i) {
if (abData[i]) {
acCodebase[j++] = (char)i;
}
}
}
// Passwoerter erzeugen
char[] acReturn;
for (int i=0; i<iCount; ++i) {
acReturn = generate(acCodebase, iLen);
System.out.println(acReturn);
}
}
}
Wenn ich das Programm ausführe werden mir in der Console acht Passwörter erstellt.
Kann mir jemand einen Tipp geben wie ich diese Passwörter nach Ausführen des Programmes in eine ascii Datei schreiben lasse?
Danke schonmal