New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

carrierwave_encrypter_decrypter

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

carrierwave_encrypter_decrypter

  • 0.0.6
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Carrierwave Encrypter Decrypter

A Rubygem to secure the file uploaded by encrypting the file later on decrypting when needed. Completely secure and depends on Ruby 2.0.0 OpenSSL::Cipher and OpenSSL::PKCS5

OpenSSL::Cipher

Provides symmetric algorithms for encryption and decryption.

OpenSSL::PKCS5

Provides password-based encryption functionality based on PKCS#5.

Installation

Add the gem to the Gemfile:

gem "carrierwave_encrypter_decrypter"    

bundle install

Getting Started

Start off by trigerring the installer

rails g ced:install

This will create a initializer carrierwave_encrypter_decrypter

create  config/initializers/carrierwave_encrypter_decrypter.rb

and a carrierwave_encrypter_decrypter.yml

create  config/carrierwave_encrypter_decrypter.yml

the above will be used when you have the encryption_type as pkcs5.

Choosing encryption type?

The Gem support 2 ways OpenSSL::Cipher and OpenSSL::PKCS5

if you want to go with standard encryption in your config/initializers/carrierwave_encrypter_decrypter.rb select

Carrierwave::EncrypterDecrypter.configure  do |config|
  config.encryption_type = :aes
  config.key_size = 256
end

if you want to go with password based encrption (pkcs5) in your config/initializers/carrierwave_encrypter_decrypter.rb select

Carrierwave::EncrypterDecrypter.configure  do |config|
  config.encryption_type = :pkcs5
  config.key_size = 256
end

Note: Make sure you have the password set in config/carrierwave_encrypter_decrypter.yml

Now in your Uploader for eg app/uploaders/avatar_uploader.rb add the after store callback

class AvatarUploader < CarrierWave::Uploader::Base
	after :store, :encrypt_file

	def encrypt_file(file)
  		Carrierwave::EncrypterDecrypter::Uploader.encrypt(self)
	end
end

Now create the migration on the model on which your uploader is mounted

rails g migration add_iv_and_key_to_users iv:binary key:binary
rake db:migrate

File Encryption

The File encryption will happen with Carrierwave::EncrypterDecrypter::Uploader.encrypt(self) once the file is uploaded you will find it with a extendion of .enc

File Decryption

The File Decryption will happen with

Carrierwave::EncrypterDecrypter::Downloader.decrypt(model,mounted_as: :avatar)

Where Model is the model on which the uploader is mounted. The Encrypted file will be decrypted in the same folder.

Eg Controller

def download
  #This will decryt the file first

  Carrierwave::EncrypterDecrypter::Downloader.decrypt(@user,mounted_as: :avatar)

  file_path = @user.avatar.path
    File.open(file_path, 'r') do |f|
      send_data f.read, type: MIME::Types.type_for(file_path).first.content_type,disposition: :inline,:filename => File.basename(file_path)
  end
    #This is to remove the decrypted file after transfer
    File.unlink(file_path)
end

Licensing

The gem itself is released under the MIT license

:pray:

FAQs

Package last updated on 31 Dec 2013

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc