upassword: rendre configurable le nombre de blocs

This commit is contained in:
Jephté Clain 2023-02-10 18:36:21 +04:00
parent 61433fbf9c
commit 0913c2ed9f
1 changed files with 25 additions and 11 deletions

View File

@ -4577,13 +4577,9 @@ public class upassword {
final String PUNCTUATIONS = "!:;,?."; final String PUNCTUATIONS = "!:;,?.";
String seed; String seed;
// taille minimale de la chaine // taille minimale de la chaine
if (size < 1) { if (size < 1) size = 1;
size = 3;
}
// S'il y a trop de ponctuations à placer // S'il y a trop de ponctuations à placer
if (punctuationsNumber > size) { if (punctuationsNumber > size) punctuationsNumber = size;
punctuationsNumber = size;
}
// préparation d'un constructeur de chaîne // préparation d'un constructeur de chaîne
StringBuilder builder = new StringBuilder(size); StringBuilder builder = new StringBuilder(size);
String punctuationsUsed = ""; String punctuationsUsed = "";
@ -4614,9 +4610,6 @@ public class upassword {
} }
return builder.toString(); return builder.toString();
} }
public static String generateJk(int size, int punctuationsNumber) {
return generateJk(size, punctuationsNumber, DEFAULT_RAND);
}
public PasswordGenerator(int minLen, String[] sections, int[] minCounts, Random rand) { public PasswordGenerator(int minLen, String[] sections, int[] minCounts, Random rand) {
setMinLen(minLen); setMinLen(minLen);
@ -4681,6 +4674,12 @@ public class upassword {
return generate(minLen, maxLen, sections, minCounts, rand); return generate(minLen, maxLen, sections, minCounts, rand);
} }
public String generateJk(int size, int punctuationsNumber) {
return generateJk(size, punctuationsNumber, rand);
}
public String generateJk(int size) {
return generateJk(size, 1, rand);
}
public String generateJk() { public String generateJk() {
return generateJk(4, 1, rand); return generateJk(4, 1, rand);
} }
@ -5011,6 +5010,8 @@ public class upassword {
+ "\n upassword -f aeskeyfile -d crypted" + "\n upassword -f aeskeyfile -d crypted"
+ "\n upassword --batch" + "\n upassword --batch"
+ "\n\nOPTIONS" + "\n\nOPTIONS"
+ "\n -b, --nb-blocks COUNT"
+ "\n Indiquer le nombre de blocs de mots de 4 caractères pour la génération"
+ "\n -p, --hash-password" + "\n -p, --hash-password"
+ "\n Crypter un mot de passe (option par défaut). Si le mot de passe en clair" + "\n Crypter un mot de passe (option par défaut). Si le mot de passe en clair"
+ "\n et/ou le salt ne sont pas spécifiés, ils sont choisis au hasard." + "\n et/ou le salt ne sont pas spécifiés, ils sont choisis au hasard."
@ -5071,6 +5072,7 @@ public class upassword {
return; return;
} }
int nbBlocks = 4;
EAction action = EAction.HASH_PASSWORD; EAction action = EAction.HASH_PASSWORD;
EHashAction hashAction = EHashAction.AUTO; EHashAction hashAction = EHashAction.AUTO;
boolean codEtu = false, crypted = false, shell = false; boolean codEtu = false, crypted = false, shell = false;
@ -5079,7 +5081,19 @@ public class upassword {
int i = 0, max = args.length; int i = 0, max = args.length;
while (i < args.length) { while (i < args.length) {
String arg = args[i]; String arg = args[i];
if (arg.equals("-p") || arg.equals("--hash-password")) { if ((arg.length() >= 2 && arg.substring(0, 2).equals("-b"))
|| arg.equals("--nb-blocks")) {
int shift = 1;
if (arg.equals("-b") || arg.equals("--nb-blocks")) {
if (args.length > i + 1) {
nbBlocks = Integer.parseInt(args[i + 1]);
shift = 2;
}
} else {
nbBlocks = Integer.parseInt(arg.substring(2));
}
i += shift;
} else if (arg.equals("-p") || arg.equals("--hash-password")) {
action = EAction.HASH_PASSWORD; action = EAction.HASH_PASSWORD;
i++; i++;
} else if ((arg.length() >= 2 && arg.substring(0, 2).equals("-j")) } else if ((arg.length() >= 2 && arg.substring(0, 2).equals("-j"))
@ -5169,7 +5183,7 @@ public class upassword {
if (clear == null) { if (clear == null) {
PasswordGenerator pg = new PasswordGenerator(); PasswordGenerator pg = new PasswordGenerator();
clear = pg.generateJk(); clear = pg.generateJk(nbBlocks);
} }
String newCryptSalt = null; String newCryptSalt = null;