Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require "flate"
- require "gzip"
- require "openssl/cipher"
- require "base64"
- require "secure_random"
- module Flate
- def self.write(str)
- io = IO::Memory.new
- Flate::Writer.new(io) do |flate|
- flate.write str.to_slice
- end
- rstr = io.to_s
- io.close
- rstr
- end
- def self.read(str)
- io = IO::Memory.new(str.to_slice)
- rstr = Flate::Reader.new(io) do |flate|
- flate.gets_to_end
- end
- io.close
- rstr
- end
- end
- module Gzip
- def self.write(str)
- io = IO::Memory.new
- Gzip::Writer.open(io) do |gzip|
- gzip.write str.to_slice
- end
- rstr = io.to_s
- io.close
- rstr
- end
- def self.read(str)
- io = IO::Memory.new(str.to_slice)
- rstr = Gzip::Reader.open(io) do |gzip|
- gzip.gets_to_end
- end
- io.close
- rstr
- end
- end
- module Enc
- def self.encrypt(value, secret = "6f65c214-1b26-46fa-a1c1-3f27ffb13802", alg = "aes-256-cbc")
- cipher = OpenSSL::Cipher.new(alg)
- cipher.encrypt
- cipher.key = secret
- iv = cipher.random_iv
- encrypted_data = IO::Memory.new
- encrypted_data.write(cipher.update(value.to_slice))
- encrypted_data.write(cipher.final)
- "#{::Base64.strict_encode encrypted_data}--#{::Base64.strict_encode iv}"
- end
- def self.decrypt(encrypted_message, secret = "6f65c214-1b26-46fa-a1c1-3f27ffb13802", alg = "aes-256-cbc")
- cipher = OpenSSL::Cipher.new(alg)
- encrypted_data, iv = encrypted_message.split("--").map { |v| ::Base64.decode(v) }
- cipher.decrypt
- cipher.key = secret
- cipher.iv = iv
- decrypted_data = IO::Memory.new
- decrypted_data.write cipher.update(encrypted_data)
- decrypted_data.write cipher.final
- decrypted_data.to_s
- end
- end
- enc = Enc.encrypt("hey you are now encrypted. That's pretty cool right?")
- puts enc
- puts Enc.decrypt(enc)
- str = Flate.write("We are the world. We are the deflated children.")
- puts Flate.read(str)
- str2 = Gzip.write("We are the world. We are the gzipped children.")
- puts Gzip.read(str2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement