]> code.delx.au - monosys/blobdiff - bin/passphrasegen
Rename all the things
[monosys] / bin / passphrasegen
diff --git a/bin/passphrasegen b/bin/passphrasegen
new file mode 100755 (executable)
index 0000000..0469ce3
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/bin/env python3
+
+import math
+import random
+import os
+
+words_filename = os.environ.get("WORDS", "/usr/share/dict/words")
+num_words = 5
+max_word_len = 8
+min_word_len = 3
+
+words = open(words_filename)
+words = [word.strip().lower() for word in words]
+words = [word for word in words if word.isalpha() and min_word_len <= len(word) <= max_word_len]
+random_words = [random.choice(words) for _ in range(num_words)]
+entropy_words = num_words * math.log(len(words)) / math.log(2)
+
+max_number = 100
+min_number = 10
+random_number = random.randint(min_number, max_number)
+entropy_number = math.log(max_number - min_number) / math.log(2)
+
+print("Entropy:", math.floor(entropy_words + entropy_number))
+print("Passphrase:", " ".join(random_words + [str(random_number)]))