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 +4 -4
- data/lib/archive.rb +38 -0
- data/lib/archive_private.rb +19 -0
- data/lib/archive_public.rb +19 -0
- data/lib/mathematics.rb +30 -0
- data/lib/rsa.rb +2 -25
- metadata +7 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 92ba272f94fe275e352c2457a09a625499b78adfd195a36e24db7f4599b6870f
|
|
4
|
+
data.tar.gz: 54e6492c8892a055ac943f8ac70c3fedf6f19aa4a2bee4f68533988d05012e89
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
data/lib/mathematics.rb
ADDED
|
@@ -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
|
-
|
|
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.
|
|
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
|
|
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://
|
|
24
|
+
homepage: https://github.com/Dayanfreitas/RSA
|
|
21
25
|
licenses:
|
|
22
26
|
- MIT
|
|
23
27
|
metadata: {}
|