aboutsummaryrefslogtreecommitdiffstats
path: root/gen-pw.rb
blob: b0512fd0d291c699801b5aac7f2a550f26c02736 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env ruby

require 'io/console'
require 'openssl'
require 'base64'

username = ARGV.shift
url = ARGV.shift
length = ARGV.shift.to_i

print('Passphrase: ');
passphrase = STDIN.noecho(&:gets).chomp; print("\n")

salt = "#{username}@#{url}"
iterations = 5000
digest = OpenSSL::Digest::SHA512.new
pbkdf2 = OpenSSL::PKCS5.pbkdf2_hmac(passphrase, salt, iterations, length, digest)
password = Base64.encode64(pbkdf2).chomp[0..length-1]
puts(password)