Class: ElGamal::PublicKey
- Inherits:
-
Object
- Object
- ElGamal::PublicKey
- Defined in:
- lib/elgamal/public_key.rb
Instance Attribute Summary collapse
-
#public_g ⇒ Object
readonly
Returns the value of attribute public_g.
-
#public_h ⇒ Object
readonly
Returns the value of attribute public_h.
-
#public_p ⇒ Object
readonly
Returns the value of attribute public_p.
Instance Method Summary collapse
- #encrypt(message, rand_k: nil) ⇒ Object
-
#initialize(public_p: nil, public_g: nil, public_h: nil) ⇒ PublicKey
constructor
A new instance of PublicKey.
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_g ⇒ Object (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_h ⇒ Object (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_p ⇒ Object (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(, 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 = * @public_h.to_bn.mod_exp(rand_k, @public_p).to_i % @public_p return ElGamal::Ciphertext.new([element_a, element_b]) end |