Skip to content

Instantly share code, notes, and snippets.

@iphoting
Created November 18, 2012 09:24
Show Gist options
  • Select an option

  • Save iphoting/4104366 to your computer and use it in GitHub Desktop.

Select an option

Save iphoting/4104366 to your computer and use it in GitHub Desktop.
Simple Numeric PIN Generator
#!/usr/bin/env ruby
#
# A simple numerical PIN generator.
# For passphrases, use pwqgen.rb.
#
# Usage:
# gem install docopt
# ./pin_gen.rb --help
#
require 'rubygems'
require 'securerandom'
require 'docopt'
appname = File.basename(__FILE__)
doc = <<DOCOPT
Secure PIN Generator
Usage:
#{appname}
#{appname} [-n NUMBER | --number=NUMBER] [LENGTH]
#{appname} (-h | --help)
#{appname} --version
Arguments:
LENGTH Length of PIN to generate. [default: 6]
NUMBER Number of PINs to generate. [default: 1]
Options:
-h --help Show this help message.
--version Show version number.
-n NUMBER --number=NUMBER Number of PINs to generate. [default: 1]
DOCOPT
begin
opt_hash = Docopt::docopt(doc, version: '0.0.1')
if opt_hash.key?('LENGTH') && !opt_hash['LENGTH'].nil?
length = opt_hash['LENGTH'].to_i
else
length = 6
end
if opt_hash.key?('NUMBER') && !opt_hash['NUMBER'].nil?
number = opt_hash['NUMBER'].to_i
else
number = 1
end
#seed = 10 ** (length)
for i in 1..number do
output = ""
for j in 1..length do
output += SecureRandom.random_number(10).to_s
end
puts output
end
rescue Docopt::Exit => e
puts e.message
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment