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 +4 -4
- data/lib/archive_private_open.rb +19 -0
- data/lib/archive_public_open.rb +19 -0
- data/lib/mathematics.rb +19 -3
- data/lib/rsa.rb +22 -16
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 63ed80c92a5bb0329eece215f6cee97b467ab6468f079b6aa06d8a2a6524f409
|
|
4
|
+
data.tar.gz: 033437ef244a711343e2e861989f793c42558eee43ec07b6133bbf247de89ed1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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 =
|
|
5
|
-
@number_primes = Prime.
|
|
20
|
+
LIMIT = 10000
|
|
21
|
+
@number_primes = Prime.each(LIMIT).to_a
|
|
6
22
|
|
|
7
23
|
def self.random_prime
|
|
8
|
-
number_random = rand(
|
|
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
|
|
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.
|
|
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-
|
|
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
|