# Ruby Password management tool # author @tukapai # mail: masashi1029xxx@gmail.com require 'securerandom' require 'json' require 'clipboard' # edit my code # TODO:ハッシュに格納されている情報をリスト形式で表示したい # TODO:パラメータは外だしにしたい。 # 定数化する PW_DATA = '../lib/rbpw.json' def load_json data = {} File.open(PW_DATA) do |f| data = JSON.load(f) end data end def write_json(data) File.open(PW_DATA, "w") do |f| JSON.dump(data, f, 10) end end # @note 標準形式のアカウントの情報を作成する。 # TODO: id pw 以外にも保存できるようにする。 # @param [String] name password set title # @param [String] id # @param [String] pw # @return hash def new_pw(name, id, pw) hash = Hash.new { |h, k| h[k] = {} } hash["#{name}"]["id"] = "#{id}" hash["#{name}"]["pw"] = "#{pw}" hash end def save_pw(hash) data = load_json data.merge(hash) write_json(data) end def show_list data = load_json puts data.keys data end def delete_item(item) write_json(load_json.delete(item)) end def clip_board_copy(item, value) load_json.dig(item, value) Clipboard.copy(load_json.dig(item, value)) end # encrypt data method # まだメソッドとして使わないのでコメントアウト # reference URL # http://webos-goodies.jp/archives/encryption_in_ruby.html # https://docs.ruby-lang.org/ja/latest/library/openssl.html # def encrypt(data, password, salt) # cipher = OpenSSL::Cipher.new("AES-256-CBC") # cipher.encrypt # cipher.pkcs5_keyivgen(password, salt) # cipher.update(data) + cipher.final # end # # def decrypt(data, password, salt) # cipher = OpenSSL::Cipher.new("AES-256-CBC") # cipher.decrypt # cipher.pkcs5_keyivgen(password, salt) # cipher.update(data) + cipher.final # end