just-encrypt 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/just-encrypt.rb +37 -0
  3. metadata +42 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: edbd0cc4df4929668bd6c9658355f44f8648f92c5a7c835f3c63961ece420bac
4
+ data.tar.gz: f4f7e8d886c883e87864b7c1120ead29de849cea5a68d91dad42909054628b51
5
+ SHA512:
6
+ metadata.gz: '08b8ec2cce938bae2d3ef517fb2a8710fb4ad50c8b5a21c95bae7072c8e1954b33ab864f6818e54a1363a299753f3a66b6411f9beab33a429d00d07faaa77351'
7
+ data.tar.gz: 30702f31df67bc8ebdc39c3068ec9839aa62861b3dc87e71e77192893a6d338b7b73ed4b9b6efdc8ae7ecfb844af5b5ca0c47456dea40301ea509206f88a886b
@@ -0,0 +1,37 @@
1
+ class JustEncrypt
2
+ require 'base64'
3
+ require 'openssl'
4
+
5
+ def self.decrypt(data, cipher_key = nil)
6
+ cipher = OpenSSL::Cipher.new 'aes-256-cbc'
7
+ cipher.decrypt
8
+ cipher.key = Rails.application.credentials.lets_encrypt[:secret]
9
+ # Proceso de desencriptación
10
+ unescaped = CGI.unescape(data) # Se le quita el urlencode
11
+ decoded = Base64.decode64(unescaped) # Se descodifica de base64
12
+ cipher.iv = decoded[0..15] # Se carga el IV. Este corresponde a los primeros 16 caracteres de la data recibida
13
+ decrypted = cipher.update(decoded[16..decoded.length - 1]) # Se hace el primer paso de desencriptación
14
+ decrypted << cipher.final # Se finaliza la desencriptación
15
+ # Se considera que esté dentro de 1 minuto la solicitud
16
+ timestamp = decrypted[-10..(decrypted.length - 1)].to_i
17
+ # Se retorna el dato del usuariodesencriptado
18
+ decrypted[0..(decrypted.length - 11)]
19
+ end
20
+
21
+ def self.encrypt(raw_user_cod, cipher_key = nil)
22
+ timestamp = Time.now.utc.to_i
23
+ secret = Rails.application.credentials.lets_encrypt[:secret]
24
+ cipher = OpenSSL::Cipher.new('aes-256-cbc')
25
+
26
+ iv = cipher.random_iv
27
+ cipher.encrypt
28
+ cipher.key = secret
29
+
30
+ encrypted_data = cipher.update(raw_user_cod + timestamp.to_s)
31
+ encrypted_data << cipher.final
32
+ data = CGI.escape(Base64.strict_encode64(iv.to_s + encrypted_data))
33
+
34
+ data
35
+ end
36
+ end
37
+
metadata ADDED
@@ -0,0 +1,42 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: just-encrypt
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jeremías G.
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-08-18 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email: jeremiasgup@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/just-encrypt.rb
20
+ homepage:
21
+ licenses: []
22
+ metadata: {}
23
+ post_install_message:
24
+ rdoc_options: []
25
+ require_paths:
26
+ - lib
27
+ required_ruby_version: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
32
+ required_rubygems_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ requirements: []
38
+ rubygems_version: 3.1.4
39
+ signing_key:
40
+ specification_version: 4
41
+ summary: The simplest gem for encrypt data
42
+ test_files: []