just-encrypt 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []