Advertisement
Guest User

Untitled

a guest
Jun 29th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. require "flate"
  2. require "gzip"
  3. require "openssl/cipher"
  4. require "base64"
  5. require "secure_random"
  6.  
  7. module Flate
  8. def self.write(str)
  9. io = IO::Memory.new
  10. Flate::Writer.new(io) do |flate|
  11. flate.write str.to_slice
  12. end
  13. rstr = io.to_s
  14. io.close
  15. rstr
  16. end
  17.  
  18. def self.read(str)
  19. io = IO::Memory.new(str.to_slice)
  20.  
  21. rstr = Flate::Reader.new(io) do |flate|
  22. flate.gets_to_end
  23. end
  24. io.close
  25. rstr
  26. end
  27. end
  28.  
  29. module Gzip
  30. def self.write(str)
  31. io = IO::Memory.new
  32. Gzip::Writer.open(io) do |gzip|
  33. gzip.write str.to_slice
  34. end
  35. rstr = io.to_s
  36. io.close
  37. rstr
  38. end
  39.  
  40. def self.read(str)
  41. io = IO::Memory.new(str.to_slice)
  42.  
  43. rstr = Gzip::Reader.open(io) do |gzip|
  44. gzip.gets_to_end
  45. end
  46. io.close
  47. rstr
  48. end
  49. end
  50.  
  51. module Enc
  52. def self.encrypt(value, secret = "6f65c214-1b26-46fa-a1c1-3f27ffb13802", alg = "aes-256-cbc")
  53. cipher = OpenSSL::Cipher.new(alg)
  54. cipher.encrypt
  55. cipher.key = secret
  56.  
  57. iv = cipher.random_iv
  58.  
  59. encrypted_data = IO::Memory.new
  60. encrypted_data.write(cipher.update(value.to_slice))
  61. encrypted_data.write(cipher.final)
  62.  
  63. "#{::Base64.strict_encode encrypted_data}--#{::Base64.strict_encode iv}"
  64. end
  65.  
  66. def self.decrypt(encrypted_message, secret = "6f65c214-1b26-46fa-a1c1-3f27ffb13802", alg = "aes-256-cbc")
  67. cipher = OpenSSL::Cipher.new(alg)
  68. encrypted_data, iv = encrypted_message.split("--").map { |v| ::Base64.decode(v) }
  69.  
  70. cipher.decrypt
  71. cipher.key = secret
  72. cipher.iv = iv
  73.  
  74. decrypted_data = IO::Memory.new
  75. decrypted_data.write cipher.update(encrypted_data)
  76. decrypted_data.write cipher.final
  77. decrypted_data.to_s
  78. end
  79. end
  80.  
  81. enc = Enc.encrypt("hey you are now encrypted. That's pretty cool right?")
  82. puts enc
  83. puts Enc.decrypt(enc)
  84.  
  85. str = Flate.write("We are the world. We are the deflated children.")
  86. puts Flate.read(str)
  87. str2 = Gzip.write("We are the world. We are the gzipped children.")
  88. puts Gzip.read(str2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement