Class: ElGamal::PublicKey

Inherits:
Object
  • Object
show all
Defined in:
lib/elgamal/public_key.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(public_p: nil, public_g: nil, public_h: nil) ⇒ PublicKey

Returns a new instance of PublicKey.



9
10
11
12
13
# File 'lib/elgamal/public_key.rb', line 9

def initialize(public_p: nil, public_g: nil, public_h: nil)
	@public_p = public_p
	@public_g = public_g
	@public_h = public_h
end

Instance Attribute Details

#public_gObject (readonly)

Returns the value of attribute public_g.



5
6
7
# File 'lib/elgamal/public_key.rb', line 5

def public_g
  @public_g
end

#public_hObject (readonly)

Returns the value of attribute public_h.



5
6
7
# File 'lib/elgamal/public_key.rb', line 5

def public_h
  @public_h
end

#public_pObject (readonly)

Returns the value of attribute public_p.



5
6
7
# File 'lib/elgamal/public_key.rb', line 5

def public_p
  @public_p
end

Instance Method Details

#encrypt(message, rand_k: nil) ⇒ Object



15
16
17
18
19
20
# File 'lib/elgamal/public_key.rb', line 15

def encrypt(message, rand_k: nil)
	rand_k ||= rand(@public_p - 1) + 1
	element_a = @public_g.to_bn.mod_exp(rand_k, @public_p).to_i
	element_b = message * @public_h.to_bn.mod_exp(rand_k, @public_p).to_i % @public_p
	return ElGamal::Ciphertext.new([element_a, element_b])
end