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.
- checksums.yaml +7 -0
- data/lib/just-encrypt.rb +37 -0
- metadata +42 -0
checksums.yaml
ADDED
@@ -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
|
data/lib/just-encrypt.rb
ADDED
@@ -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: []
|