]> gitweb.factorcode.org Git - factor.git/blob - basis/random/passwords/passwords.factor
61cc31c1881c0cbf9006cc71eaa8386236419e3f
[factor.git] / basis / random / passwords / passwords.factor
1 ! Copyright (C) 2019 Alexander Ilin.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: fry literals math.ranges random sequences ;
4 IN: random.passwords
5
6 <PRIVATE
7
8 CONSTANT: ascii-printable-charset $[ 33 126 [a..b] ]
9 CONSTANT: hex-charset "0123456789ABCDEF"
10 CONSTANT: alphanum-charset $[
11     CHAR: 0 CHAR: 9 [a..b]
12     CHAR: a CHAR: z [a..b] append
13     CHAR: A CHAR: Z [a..b] append ]
14
15 PRIVATE>
16
17 : password ( n charset -- string )
18     '[ [ _ random ] "" replicate-as ] with-secure-random ;
19
20 : ascii-password ( n -- string )
21     ascii-printable-charset password ;
22
23 : hex-password ( n -- string )
24     hex-charset password ;
25
26 : alnum-password ( n -- string )
27     alphanum-charset password ;