Module: RSA

Defined in:
lib/rsa.rb

Defined Under Namespace

Modules: OPEN Classes: Private, Public

Class Method Summary collapse

Class Method Details

.decode(menssage_encode) ⇒ Object



185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# File 'lib/rsa.rb', line 185

def self.decode(menssage_encode)  
  d = nil
  n = nil

  if RSA::OPEN::Private.d && RSA::OPEN::Private.n
    d = RSA::OPEN::Private.d
    n = RSA::OPEN::Private.n
  else
    archive_private = ArchivePrivate.new
    private_file = archive_private.read
    d = private_file[:key_d].to_i
    n = private_file[:key_p].to_i * private_file[:key_q].to_i
  end

  menssage_decode = menssage_encode.map { |block|
    original_chunk = block.to_i.mod_pow(d, n)
    TextChunk.new(original_chunk).to_s
  }.join

  MessageCompile.back_pre_compile(menssage_decode)
end

.encode(menssage) ⇒ Object



162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# File 'lib/rsa.rb', line 162

def self.encode(menssage)
  e = nil
  n = nil

  if RSA::OPEN::Public.e && RSA::OPEN::Public.n
    e = RSA::OPEN::Public.e
    n = RSA::OPEN::Public.n
  else
    archive_public = ArchivePublic.new
    file = archive_public.read
    e = file[:e].to_i
    n = file[:key_n].to_i
  end
  chunk_size = TextChunk.block_size(n)
  split_in_regex = /.{1,#{chunk_size}}/

  pre_compile = MessageCompile.pre_compile(menssage)
  array_chunk = pre_compile.scan(split_in_regex)
  array_chunk.map { |chunk| 
    TextChunk.new(chunk).to_i.mod_pow(e, n) 
  }
end

.generatedObject



146
147
148
149
150
151
152
# File 'lib/rsa.rb', line 146

def self.generated
  private = RSA::Private.new
  public = RSA::Public.new(private: private)

  private.create_file_of_keys
  public.create_file_of_keys
end

.generated_open_keysObject



154
155
156
157
158
159
160
# File 'lib/rsa.rb', line 154

def self.generated_open_keys
  private = RSA::Private.new
  public = RSA::Public.new(private: private)

  private.create_file(ArchivePrivateOpen.new)
  public.create_file(ArchivePublicOpen.new)
end