15 lines
666 B
Text
15 lines
666 B
Text
passwd(len=8, count=1, seed=0) =
|
|
{
|
|
if (len <= 4, print("password too short, minimum len=4"); return(), seed, setrand(seed));
|
|
|
|
my (C=["abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ","0123456789","!\"#$%&'()*+,-./:;<=>?@[]^_{|}~"], P, j);
|
|
|
|
for (i=1, count, K = vector(#C); P = "";
|
|
for (l=1, len, K[j = random(#C)+1]++;
|
|
P = concat(P, Strchr(Vecsmall(C[j])[random(#C[j])+1]))
|
|
);
|
|
if (prod(z=1, #K, K[z]), print(P), i--) \\ if password contains all char classes print else redo
|
|
);
|
|
}
|
|
|
|
addhelp(passwd, "passwd({len},{count},{seed}): Password generator, optional: len (min=4, default=8), count (default=1), seed (default=0: no seed)");
|