Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. require 'yaml'
  2. require 'openssl'
  3.  
  4. def read_config
  5. unless File.exist?(ENV["HOME"] + "/.mabs_api.yml")
  6. key = {
  7. :key => cipher.random_key,
  8. :iv => cipher.random_iv
  9. }
  10.  
  11. File.write(ENV["HOME"] + "/.mabs_api.yml", key.to_yaml)
  12. end
  13.  
  14. YAML.load_file(ENV["HOME"] + "/.mabs_api.yml")
  15. end
  16.  
  17. # Used as flag to whether to encrypt or decrypt the file
  18. # By default we encrypt the files
  19. fdecrypt = false
  20.  
  21. aes = OpenSSL::Cipher::AES.new(128, :CBC)
  22.  
  23. if ARGV.empty? || ARGV[0] == "--help"
  24. abort "Use --encrypt/--decrypt to encrypt/decrypt the given file"
  25. end
  26.  
  27. case ARGV[0]
  28. when "--encrypt"
  29. aes.encrypt
  30. when "--decrypt"
  31. aes.decrypt
  32. fdecrypt = true
  33. else
  34. abort "Unknow arguments #{ARGV[0]}"
  35. end
  36.  
  37. config = read_config
  38. aes.key = config[:key]
  39. aes.iv = config[:iv]
  40.  
  41. content = File.read(ARGV[1])
  42.  
  43. if fdecrypt
  44. filename = ARGV[1].chomp(".enc")
  45. final_content = aes.update(content) + aes.final
  46. else
  47. filename = ARGV[1] + ".enc"
  48. final_content = aes.update(content) + aes.final
  49. end
  50.  
  51. File.write(filename, final_content)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement