rsaa 0.0.6 → 0.0.7

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: 70896d0c3fce5933fcbb234100e9d7ca6b2f6ba818fdbe3f0c7799c7bd2459a7
4
- data.tar.gz: c5c5bc35dd136bbb6f6e62170624a7281ae52930e7fee8a724d29cc4291828b4
3
+ metadata.gz: 63ed80c92a5bb0329eece215f6cee97b467ab6468f079b6aa06d8a2a6524f409
4
+ data.tar.gz: 033437ef244a711343e2e861989f793c42558eee43ec07b6133bbf247de89ed1
5
5
  SHA512:
6
- metadata.gz: 9700ea5f52225bb477b14541cf3c19747ecde26c22ed8acde7fb2b770748262271cbfae1725c83874da873b185ed52cc02bc2cefc3b6057b6a5f668ec548c29d
7
- data.tar.gz: 830fd958b4b5fecbe3c4b043fcf9a14ebf046571faafe679d478bbe773815f08e61b617f0ea829875be3069923fcc019c02ccc15efb46c92008a4a54b2a688e1
6
+ metadata.gz: b2ccc8ee489e257283d1f07c422b9b0df2ba1a041840d88f35fa7a5f1d8738e227598ca30b51f4c52feea611e7ba2357d13f12b762dbba490c8281871a82298d
7
+ data.tar.gz: 295c2abe92bb105e551399ea89dd57258f65ae3aa2d34cc02e8deadedb68e01f9130cd9854612bb39bb9b0a2e1f860583641f16b95d948c609f6ef9700487caf
@@ -0,0 +1,19 @@
1
+ require_relative './archive'
2
+
3
+ class ArchivePrivateOpen < 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
+ file
12
+ end
13
+
14
+ def write(text)
15
+ file = File.open(full_name, Archive::MODE_WRITE)
16
+ file.puts text
17
+ file.close
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ require_relative './archive'
2
+
3
+ class ArchivePublicOpen < 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
+ file
12
+ end
13
+
14
+ def write(text)
15
+ file = File.open(full_name, Archive::MODE_WRITE)
16
+ file.puts text
17
+ file.close
18
+ end
19
+ end
data/lib/mathematics.rb CHANGED
@@ -1,11 +1,27 @@
1
1
  require 'prime'
2
2
 
3
+ class Integer
4
+ def mod_pow(exp, mod)
5
+ result = 1
6
+ base = self
7
+ while exp > 0
8
+ if (exp & 1) == 1
9
+ result = (result * base) % mod
10
+ end
11
+ exp = exp >> 1
12
+ base = (base * base) % mod
13
+ end
14
+
15
+ result
16
+ end
17
+ end
18
+
3
19
  class Mathematics
4
- LIMIT = 100
5
- @number_primes = Prime.take(LIMIT)
20
+ LIMIT = 10000
21
+ @number_primes = Prime.each(LIMIT).to_a
6
22
 
7
23
  def self.random_prime
8
- number_random = rand(LIMIT)
24
+ number_random = rand(@number_primes.length)
9
25
  @number_primes[number_random]
10
26
  end
11
27
 
data/lib/rsa.rb CHANGED
@@ -3,23 +3,10 @@ require_relative 'mathematics'
3
3
  require_relative './text_chunk'
4
4
  require_relative './archive_private'
5
5
  require_relative './archive_public'
6
+ require_relative './archive_private_open'
7
+ require_relative './archive_public_open'
6
8
  require_relative './message_compile'
7
9
 
8
- class Integer
9
- def mod_pow(exp, mod)
10
- result = 1
11
- base = self
12
- while exp > 0
13
- if (exp & 1) == 1
14
- result = (result * base) % mod
15
- end
16
- exp = exp >> 1
17
- base = (base * base) % mod
18
- end
19
-
20
- result
21
- end
22
- end
23
10
 
24
11
  module RSA
25
12
  module OPEN
@@ -87,6 +74,11 @@ module RSA
87
74
  private_key_file.write keys
88
75
  end
89
76
 
77
+ def create_file(archive)
78
+ key_n = @key_p * @key_q
79
+ archive.write [key_n, @key_d]
80
+ end
81
+
90
82
  private
91
83
 
92
84
  def generated_p_and_q
@@ -117,6 +109,10 @@ module RSA
117
109
  public_key_file.write keys
118
110
  end
119
111
 
112
+ def create_file(archive)
113
+ archive.write [@key_n, @e]
114
+ end
115
+
120
116
  private
121
117
 
122
118
  def keys
@@ -155,6 +151,14 @@ module RSA
155
151
  public.create_file_of_keys
156
152
  end
157
153
 
154
+ def self.generated_open_keys
155
+ private = RSA::Private.new
156
+ public = RSA::Public.new(private: private)
157
+
158
+ private.create_file(ArchivePrivateOpen.new)
159
+ public.create_file(ArchivePublicOpen.new)
160
+ end
161
+
158
162
  def self.encode(menssage)
159
163
  e = nil
160
164
  n = nil
@@ -174,7 +178,7 @@ module RSA
174
178
  pre_compile = MessageCompile.pre_compile(menssage)
175
179
  array_chunk = pre_compile.scan(split_in_regex)
176
180
  array_chunk.map { |chunk|
177
- TextChunk.new(chunk).to_i.mod_pow(e ,n)
181
+ TextChunk.new(chunk).to_i.mod_pow(e, n)
178
182
  }
179
183
  end
180
184
 
@@ -200,3 +204,5 @@ module RSA
200
204
  MessageCompile.back_pre_compile(menssage_decode)
201
205
  end
202
206
  end
207
+
208
+ RSA.generated_open_keys
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.6
4
+ version: 0.0.7
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-07-12 00:00:00.000000000 Z
11
+ date: 2022-07-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ''
14
14
  email: dayan.freitas.df@gmail.com.br
@@ -18,7 +18,9 @@ extra_rdoc_files: []
18
18
  files:
19
19
  - lib/archive.rb
20
20
  - lib/archive_private.rb
21
+ - lib/archive_private_open.rb
21
22
  - lib/archive_public.rb
23
+ - lib/archive_public_open.rb
22
24
  - lib/mathematics.rb
23
25
  - lib/message_compile.rb
24
26
  - lib/rsa.rb