You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
755 B
32 lines
755 B
#!/usr/bin/env zsh |
|
# |
|
# Usage: genpass-monkey [NUM] |
|
# |
|
# Generate a password made of 26 alphanumeric characters |
|
# with the security margin of at least 128 bits. |
|
# |
|
# Example password: nz5ej2kypkvcw0rn5cvhs6qxtm |
|
# |
|
# If given a numerical argument, generate that many passwords. |
|
|
|
emulate -L zsh -o no_unset -o warn_create_global -o warn_nested_var |
|
|
|
if [[ ARGC -gt 1 || ${1-1} != ${~:-<1-$((16#7FFFFFFF))>} ]]; then |
|
print -ru2 -- "usage: $0 [NUM]" |
|
return 1 |
|
fi |
|
|
|
zmodload zsh/system || return |
|
|
|
{ |
|
local -r chars=abcdefghjkmnpqrstvwxyz0123456789 |
|
local c |
|
repeat ${1-1}; do |
|
repeat 26; do |
|
sysread -s1 c || return |
|
# There is uniform because $#chars divides 256. |
|
print -rn -- $chars[#c%$#chars+1] |
|
done |
|
print |
|
done |
|
} </dev/urandom
|
|
|