2015-11-18 5 views
0

У меня есть файл YAML, содержащий имена пользователей и пароли.Дайджест-значение в файле YAML в хеш MD5

Обзор YAML:

users: 
test: 
    password: test 
    test2: 
    password: test2 

Я хочу, чтобы зашифровать значение пароля в хэш MD5 с помощью Digest::MD5, например:

user: 
    Lost Bam: 
    password: testtesttest #<=I want to overwrite this password with a MD5 hash 

В Digest есть способ для шифрования хэш-значение? Если да, то как это реализовать в YAML-файле?

md5.rb Источник:

require 'yaml' 
require 'digest' 

private 

    def load_file 
     File.exist?('info.yml') ? YAML.load_file('info.yml') : {users: {}} 
    end 

    def read_file 
     File.read('info.yml') 
    end 

    def save_file(hash) 
     File.open('info.yml', 'w') { |f| f.write(hash.to_yaml)} 
    end 

    def add_user 
     hash = load_file 
     hash["users"][prompt('Enter username:')] = 
      { "password" => prompt('Enter password:') } 
     puts "Encrypt information?" 
     information = gets.chomp 
     case input 
     when /yes/i 
#   hash = Digest::MD5.digest(["password"]'value')<-Doesn't work 
# 
#This is where I want to be able to encrypt the 
#value of the password key that was entered by the user 
# 
#   save_file(hash) 
     else 
      puts "Add another?"#Not completed yet 
     end 
     save_file(hash) 
    end 

main.rb Источник:

require_relative 'md5.rb' 

def main 
    puts <<-END.gsub(/^\s*>/, '') 
       > 
       >To load information type "L" to quit system type "Q" 
       > 
      END 
    input = gets.chomp.upcase 
    case input 
    when "L" 
     add_user 
    when "Q" 
     exit_system 
    else 
     exit_lock 
    end 
end 

def exit_system 
    puts "Exiting..." 
    exit 
end 

def exit_lock 
    puts "Locked out, please contact system administrator" 
    exit 
end 

def restart 
    puts "Encrypt more?" 
    input = gets.chomp 
    if input =~ /yes/i 
     return true 
    else 
     exit_system 
    end 
end 

def prompt(message) 
    puts message 
    gets.chomp 
end 
main 
+0

ли вы имеете в виду переварить значения после чтения из Файл YAML? – Edward

+0

@Edward да, я редактировал вопрос – 13aal

+0

Что значит «определенные вещи» и почему его трудно реализовать в YAML? Укажите код, который показывает, что вы пытаетесь сделать, или показывает, где вы искали, и почему ответы не помогли вам написать код. Как это не ясно, что вы сделали. Пожалуйста, прочитайте «[ask]». –

ответ