rsaa 0.0.2 → 0.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d5338c1172c5f94ee70591af243777057bc32120830fbb45429bc6d743f0ddac
4
- data.tar.gz: 7a451e70fcb928ed3c35734c089a8a59be34d0899783e06f8e5dd5eaf3abe26f
3
+ metadata.gz: 92ba272f94fe275e352c2457a09a625499b78adfd195a36e24db7f4599b6870f
4
+ data.tar.gz: 54e6492c8892a055ac943f8ac70c3fedf6f19aa4a2bee4f68533988d05012e89
5
5
  SHA512:
6
- metadata.gz: 1993ed77baef4bef128771d5f15b8e499c7190bdd31a5161fa49c1f414fdd01cac8ab4dad78d26d868db31b216aae6a498a48acb8536a08c13fd09eb45f31f59
7
- data.tar.gz: 132934d92f7fd84326775b95c426ddac6c7651686bf2d8061072f46693ad5c10bf88793d35819c0efb4a5a153446599cd9d81f3231c8a487d6823cc303c63220
6
+ metadata.gz: 835876b56cdc657df8cb1c6e8c97decf6645fd8cd0aae8569b192491185615b3d894ade7976ff79f018b6535c576b28660e8b2c41b3d4fee4b1684c6b6a32938
7
+ data.tar.gz: 22ee2b3e969613d89f5e14b4881d8a59512481da9676dd64da69a5d75953ad219a828322b9b7ea825cbea9fe1dc95673c8317d1b995c29d47c904f6faaaebcc5
data/lib/archive.rb ADDED
@@ -0,0 +1,38 @@
1
+ require "base64"
2
+
3
+ class Archive
4
+ ROOT_PATH_FILE = "./"
5
+ EXTENSION_FILE = ".txt"
6
+ MODE_WRITE = "w"
7
+ FILE_PATH_KEYS="keys"
8
+
9
+ attr_reader :name, :path
10
+
11
+ def read
12
+ raise "Not implement"
13
+ end
14
+
15
+ def write
16
+ raise "Not implement"
17
+ end
18
+
19
+ def set_name(name)
20
+ @name = name
21
+ end
22
+
23
+ def full_name
24
+ if FILE_PATH_KEYS
25
+ Dir.mkdir(FILE_PATH_KEYS) unless Dir.exist?(FILE_PATH_KEYS)
26
+ end
27
+
28
+ "#{ FILE_PATH_KEYS + '/' if FILE_PATH_KEYS}#{@name || 'text'}#{EXTENSION_FILE}"
29
+ end
30
+
31
+ def encode(string)
32
+ Base64.encode64(string)
33
+ end
34
+
35
+ def decode(string)
36
+ Base64.decode64(string)
37
+ end
38
+ end
@@ -0,0 +1,19 @@
1
+ require_relative './archive'
2
+
3
+ class ArchivePrivate < Archive
4
+ FILE_NAME = 'private'
5
+ def initialize
6
+ set_name(FILE_NAME)
7
+ end
8
+
9
+ def read
10
+ file = File.open full_name
11
+ decode file.read
12
+ end
13
+
14
+ def write(text)
15
+ file = File.open(full_name, Archive::MODE_WRITE)
16
+ file.puts encode text
17
+ file.close
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ require_relative './archive'
2
+
3
+ class ArchivePublic < Archive
4
+ FILE_NAME = 'public'
5
+ def initialize
6
+ set_name(FILE_NAME)
7
+ end
8
+
9
+ def read
10
+ file = File.open full_name
11
+ decode file.read
12
+ end
13
+
14
+ def write(text)
15
+ file = File.open(full_name, Archive::MODE_WRITE)
16
+ file.puts encode text
17
+ file.close
18
+ end
19
+ end
@@ -0,0 +1,30 @@
1
+ require 'prime'
2
+
3
+ class Mathematics
4
+ LIMIT = 100
5
+ @number_primes = Prime.take(LIMIT)
6
+
7
+ def self.random_prime
8
+ number_random = rand(LIMIT)
9
+ @number_primes[number_random]
10
+ end
11
+
12
+ def self.pow(n, e)
13
+ n ** e
14
+ end
15
+
16
+ def self.mod(dividend, divider)
17
+ dividend % divider
18
+ end
19
+
20
+ def self.is_multiplicative_inverse?(term1, term2)
21
+ # (i * e) % @totiente_n == 1
22
+ mod(term1, term2) == 1
23
+ end
24
+
25
+ def self.func_totiente_n(p, q)
26
+ # função totiente em n
27
+ # 𝜑(𝑛) = (𝑝 − 1) ∗ (𝑞 − 1)
28
+ (p - 1) * (q - 1)
29
+ end
30
+ end
data/lib/rsa.rb CHANGED
@@ -26,16 +26,6 @@ module RSA
26
26
  private_key_file.write JSON.generate keys
27
27
  end
28
28
 
29
- def display_keys
30
- puts ""
31
- puts "==== PRIVATE KEYS ===="
32
- puts @key_p
33
- puts @key_q
34
- puts @key_d
35
- puts @totiente_n
36
- puts "=== END PRIVATE KEYS ==="
37
- end
38
-
39
29
  private
40
30
 
41
31
  def generated_p_and_q
@@ -44,9 +34,7 @@ module RSA
44
34
  end
45
35
 
46
36
  def generated_totiente_n
47
- # função totiente em n
48
- # 𝜑(𝑛) = (𝑝 − 1) ∗ (𝑞 − 1)
49
- @totiente_n = (@key_p - 1) * (@key_q - 1)
37
+ @totiente_n = Mathematics.func_totiente_n(@key_p, @key_q)
50
38
  end
51
39
 
52
40
  def keys
@@ -68,14 +56,6 @@ module RSA
68
56
  public_key_file.write JSON.generate(keys)
69
57
  end
70
58
 
71
- def display_keys
72
- puts ""
73
- puts "==== PUBLIC KEYS ===="
74
- puts @key_n
75
- puts @e
76
- puts "== END PUBLIC KEYS =="
77
- end
78
-
79
59
  private
80
60
 
81
61
  def keys
@@ -110,10 +90,7 @@ module RSA
110
90
  private = RSA::Private.new
111
91
  public = RSA::Public.new(private: private)
112
92
 
113
- private.display_keys
114
93
  private.create_file_of_keys
115
-
116
- public.display_keys
117
94
  public.create_file_of_keys
118
95
  end
119
96
 
@@ -132,7 +109,7 @@ module RSA
132
109
  menssage_encode
133
110
  end
134
111
 
135
- def self.decode(menssage_encode)
112
+ def self.decode(menssage_encode)
136
113
  archive_private = ArchivePrivate.new
137
114
  private_file = archive_private.read
138
115
  private_file = JSON.parse(private_file)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsaa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dayan Freitas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-24 00:00:00.000000000 Z
11
+ date: 2022-07-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ''
14
14
  email: dayan.freitas.df@gmail.com.br
@@ -16,8 +16,12 @@ executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
+ - lib/archive.rb
20
+ - lib/archive_private.rb
21
+ - lib/archive_public.rb
22
+ - lib/mathematics.rb
19
23
  - lib/rsa.rb
20
- homepage: https://rubygems.org/gems/rsaa
24
+ homepage: https://github.com/Dayanfreitas/RSA
21
25
  licenses:
22
26
  - MIT
23
27
  metadata: {}