just-encrypt 0.0.3 → 0.0.4

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 +4 -4
  2. data/lib/just-encrypt.rb +28 -25
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: beff4b7cfe1691be48d32eb5ba98b5c34fbcd5ca6a81276d45e11224ca3a0d0a
4
- data.tar.gz: 2b4f19f6d72bc81a243e7ca7d32079d24f25f25849f090e188fc88e1712f1391
3
+ metadata.gz: d098863785faeea95dd4205e6cf623a8f543137716bfc007868ef19703a356d8
4
+ data.tar.gz: 4610a38974c0b379ce10978c26e49e2b51fb4ed5e155987dd0c0d196fa5979e9
5
5
  SHA512:
6
- metadata.gz: ab9a10269d80812e06af0c83d778a6c51772d14c1e2ead18c0b591e62b0d69a792dec1b6e7834ac99a2e3d6dbee022204da24e03a16b53bf3f8d59fa55afce12
7
- data.tar.gz: e5ff6273057c09298b6eb046a72f7a5d5cfed9c7db9360286e7f11982eb8b2a7e0662334d93df284ab699568aae11c7ef59c0683fbc493ecbc89bfacec522f75
6
+ metadata.gz: e3ec12b4be15f5bb2d128ff4cbf32e5d967b70b75f3e9b3c51149bc56697112c0d903676fbabdeb6a81075d46506eee4e336d7f37d0599ba1095ec166b52df50
7
+ data.tar.gz: eba123531b8270d4658cc86056d458ec329d5510ac5946b573e4fe7e68c679b4ba09528db3bb8e0100e93540233315f43bf86940966496a61bf5429f8cdd9308
@@ -1,36 +1,39 @@
1
1
  class JustEncrypt
2
2
  require 'base64'
3
3
  require 'openssl'
4
-
5
- def self.decrypt(data, cipher_key = nil)
6
- cipher = OpenSSL::Cipher.new 'aes-256-cbc'
4
+
5
+ def self.decrypt(base64_encrypted_text)
6
+ # cipher for encrypting/decrypting
7
+ secret = Rails.application.credentials.just_encrypt[:secret]
8
+ key = Digest::SHA1.hexdigest(secret).slice(0..31)
9
+ encrypted_text = Base64.decode64(base64_encrypted_text)
10
+ # set cipher for decryption
11
+ cipher = OpenSSL::Cipher.new("aes-256-cbc")
7
12
  cipher.decrypt
8
- cipher.key = Rails.application.credentials.just_encrypt[:secret]
9
- # Decryption Process
10
- unescaped = CGI.unescape(data) # Remove urlencode
11
- decoded = Base64.decode64(unescaped) # Decode from base64
12
- cipher.iv = decoded[0..15] # This corresponds to the first 16 characters of the received data
13
- decrypted = cipher.update(decoded[16..decoded.length - 1]) # First step for decrypt
14
- decrypted << cipher.final # Decryption finished
15
- timestamp = decrypted[-10..(decrypted.length - 1)].to_i
16
- # Return decrypted data
17
- decrypted[0..(decrypted.length - 11)]
13
+ cipher.key = key
14
+ cipher.iv = encrypted_text[0..15]
15
+
16
+ # decryption
17
+ decrypted = cipher.update(encrypted_text[16..encrypted_text.length-1])
18
+ decrypted << cipher.final
19
+ decrypted
18
20
  end
19
21
 
20
- def self.encrypt(raw_user_cod, cipher_key = nil)
21
- timestamp = Time.now.utc.to_i
22
+ def self.encrypt(text)
23
+ # cipher for encrypting/decrypting
22
24
  secret = Rails.application.credentials.just_encrypt[:secret]
23
- cipher = OpenSSL::Cipher.new('aes-256-cbc')
24
-
25
- iv = cipher.random_iv
25
+ key = Digest::SHA1.hexdigest(secret).slice(0..31)
26
+ # set cipher for encryption
27
+ cipher = OpenSSL::Cipher::AES256.new(:CBC)
26
28
  cipher.encrypt
27
- cipher.key = secret
28
-
29
- encrypted_data = cipher.update(raw_user_cod + timestamp.to_s)
30
- encrypted_data << cipher.final
31
- data = CGI.escape(Base64.strict_encode64(iv.to_s + encrypted_data))
32
-
33
- data
29
+ cipher.key = key
30
+ iv = cipher.random_iv
31
+ cipher.iv = iv
32
+
33
+ # encrypt the message
34
+ encrypted = cipher.update(text)
35
+ encrypted << cipher.final
36
+ Base64.encode64(iv + encrypted)
34
37
  end
35
38
  end
36
39
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: just-encrypt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremías G.