]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/env ruby | |
2 | ||
3 | require "openssl" | |
4 | ||
5 | arguments = ARGV | |
6 | ||
7 | if arguments.size != 3 | |
8 | puts "generate_password <size> <seed_file> <password_key>" | |
9 | exit | |
10 | end | |
11 | ||
12 | size = arguments.shift | |
13 | seed_file = arguments.shift | |
14 | password_key = arguments.shift | |
15 | ||
16 | size = size.to_i | |
17 | ||
18 | set = ('a' .. 'z').to_a + ('A' .. 'Z').to_a + ('0' .. '9').to_a | |
19 | ||
20 | key = "#{File.open(seed_file).read}:#{password_key}" | |
21 | ||
22 | password = size.times.collect do |i| | |
23 | set[OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), key, i.to_s).to_i(16) % set.size] | |
24 | end.join | |
25 | ||
26 | puts password |