rubyco(るびこ)の日記 RSSフィード

2013-02-02

パスワードを作成するRubyスクリプト

# makepass.rb
require 'io/console'
require 'digest/sha2'
require 'base64'
require 'win32/clipboard'

Win32::Clipboard.set_data('')
STDIN.noecho do |io|
  puts "Hit many keys randomly."
  s = io.gets
  while s.length < 100
    puts "I need more random keys."
    s += io.gets
  end
  d = Digest::SHA512.digest(s)
  e = Base64.encode64(d)
  e.gsub!(/[\+\/=\n]/, '')
  puts "Thanks.  I've saved a password-like string in your clipboard."
  Win32::Clipboard.set_data(e)
end
  • 使っている様子
C:\> ruby -v
ruby 1.9.3p374 (2013-01-15) [i386-mingw32]

C:\> gem install win32-clipboard
Fetching: win32-api-1.4.8-x86-mingw32.gem (100%)
Fetching: windows-api-0.4.2.gem (100%)
Fetching: windows-pr-1.2.2.gem (100%)
Fetching: win32-clipboard-0.5.2.gem (100%)
Successfully installed win32-api-1.4.8-x86-mingw32
Successfully installed windows-api-0.4.2
Successfully installed windows-pr-1.2.2
Successfully installed win32-clipboard-0.5.2
4 gems installed
Installing ri documentation for win32-api-1.4.8-x86-mingw32...
Installing ri documentation for windows-api-0.4.2...
Installing ri documentation for windows-pr-1.2.2...
Installing ri documentation for win32-clipboard-0.5.2...
Installing RDoc documentation for win32-api-1.4.8-x86-mingw32...
Installing RDoc documentation for windows-api-0.4.2...
Installing RDoc documentation for windows-pr-1.2.2...
Installing RDoc documentation for win32-clipboard-0.5.2...

C:\> ruby makepass.rb
Hit many keys randomly.     ←ここでキーボードを乱打し、最後にENTERキーを打つ。
I need more random keys.    ←キー不足のときにはこういう表示になる。
Thanks.  I've saved a password-like string in your clipboard.

この時点でクリップボードに、
4GXt2VP9lpievshQmAVYFOJtXqQ26YadHFei1HYRyYTnNH8EPvIETEg6rjTr6DssOrPSArECcCCqrqfBsqA
のようなパスワードっぽい文字列が入っているので適当に使う。

kmachukmachu 2013/02/02 21:05 1.9.3ならSecureRandomを使う方法もありますね。
www.ruby-doc.org/stdlib-1.9.3/libdoc/securerandom/rdoc/SecureRandom.html

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証