28 lines
697 B
Factor
28 lines
697 B
Factor
! Copyright (C) 2019 Alexander Ilin.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: fry literals math.ranges random sequences ;
|
|
IN: random.passwords
|
|
|
|
<PRIVATE
|
|
|
|
CONSTANT: ascii-printable-charset $[ 33 126 [a,b] ]
|
|
CONSTANT: hex-charset "0123456789ABCDEF"
|
|
CONSTANT: alphanum-charset $[
|
|
CHAR: 0 CHAR: 9 [a,b]
|
|
CHAR: a CHAR: z [a,b] append
|
|
CHAR: A CHAR: Z [a,b] append ]
|
|
|
|
PRIVATE>
|
|
|
|
: password ( n charset -- string )
|
|
'[ [ _ random ] "" replicate-as ] with-secure-random ;
|
|
|
|
: ascii-password ( n -- string )
|
|
ascii-printable-charset password ;
|
|
|
|
: hex-password ( n -- string )
|
|
hex-charset password ;
|
|
|
|
: alnum-password ( n -- string )
|
|
alphanum-charset password ;
|