Diceware

# -*- coding: undecided -*-
# Simple Diceware tool for creating passwords.
#
# This tool takes all words in /usr/share/dict and randomly selects some of them using the Ruby securerandom class. Sadly this class uses only a PRNG and not /dev/random. Be warned!
#
# For more on Diceware have a look here: https://en.wikipedia.org/wiki/Diceware
# Creative Commons License: https://creativecommons.org/licenses/by/4.0/deed.en_US
#
# Author: Bernd Brägelmann
# Timestamp: 20140113 224312

require 'securerandom'

wordlist_path="/usr/share/dict"

words = Array.new

Dir.entries(wordlist_path).each do |name|
if name != ".." && name != "."
file = File.new(wordlist_path+"/"+name,"r")
while (line = file.gets)
if line.chomp.encode("UTF-8").valid_encoding?
words << line.chomp.encode("UTF-8").split('\W')
end
end
puts "read "+wordlist_path+"/"+name
file.close
end
end

puts "words: #{words.length}"

100.times{
puts words[SecureRandom.random_number(words.length)]
}

Leave a Reply

Your email address will not be published. Required fields are marked *