[interchange] Add simple tag to generate user-friendly passwords

Jon Jensen interchange-cvs at icdevgroup.org
Thu Jan 24 17:12:10 UTC 2013


commit cd3e8ed91ad2857546cdd9088e1aae741d29a15d
Author: Jon Jensen <jon at endpoint.com>
Date:   Thu Jan 24 10:09:44 2013 -0700

    Add simple tag to generate user-friendly passwords
    
    Takes no options at all.
    
    Could profitably have options to control length, characters used,
    etc., but this has been useful to some of us for years and is simple
    and has no external dependencies, so might as well get it in here.

 code/UserTag/make_password.tag |   44 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 44 insertions(+), 0 deletions(-)
---
diff --git a/code/UserTag/make_password.tag b/code/UserTag/make_password.tag
new file mode 100644
index 0000000..3049fdd
--- /dev/null
+++ b/code/UserTag/make_password.tag
@@ -0,0 +1,44 @@
+# Copyright 2003-2013 Jon Jensen <jon at endpoint.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version. See the LICENSE file for details.
+
+Usertag make-password Routine <<EOR
+sub {
+	my @v = qw( a e i o u );
+	my @c = qw( b d f g h j k m n p r s t v w z );  # no l, y
+	my @c2 = (@c, qw( c q x ));
+	my @d = (2..9);   # no 0, 1
+
+	my $did_numbers = 0;
+	my $did_letters = 0;
+	my $last_numbers;
+	my $pass = '';
+	for (1..3) {
+		my $l = rand(10) > 7;
+		if ($last_numbers) {
+			$l = 1;
+		}
+		elsif ($_ > 2) {
+			undef $l if ! $did_numbers;
+			$l = 1 if ! $did_letters;
+		}
+		if ($l) {
+			$pass .= $c[rand @c] . $v[rand @v];
+			$pass .= $c2[rand @c2] if rand(10) > 5;
+			++$did_letters;
+			undef $last_numbers;
+		}
+		else {
+			$pass .= $d[rand @d];
+			$pass .= $d[rand @d] if rand(10) > 3;
+			++$did_numbers;
+			$last_numbers = 1;
+		}
+		redo if $_ > 2 and length($pass) < 8;
+	}
+	return $pass;
+}
+EOR



More information about the interchange-cvs mailing list