2015-11-18 2 views
0

J'ai un fichier YAML contenant les noms d'utilisateur et les mots de passe.Valeur de cryptage dans le fichier YAML dans le hachage MD5

Vue d'ensemble de YAML:

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

Je veux chiffrer la valeur de mot de passe dans un hachage MD5 à l'aide Digest::MD5 par exemple:

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

Digest est-il un moyen de chiffrer une valeur de hachage? Si oui, comment puis-je implémenter ceci dans un fichier YAML?

md5.rb Source:

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 Source:

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

Voulez-vous dire digérer les valeurs après avoir lu le Fichier YAML? – Edward

+0

@Edward oui je fais, j'ai édité la question – 13aal

+0

Que voulez-vous dire "certaines choses" et pourquoi est-il difficile à mettre en œuvre dans YAML? S'il vous plaît fournir un code qui montre ce que vous essayez de faire, ou qui montre où vous avez cherché et pourquoi les réponses ne vous ont pas aidé à écrire le code. Comme c'est pas clair ce que vous avez fait. S'il vous plaît lire "[demander]". –

Répondre