just-encrypt 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|