class ElGamal::PublicKey
Attributes
public_g[R]
public_h[R]
public_p[R]
Public Class Methods
new(public_p: nil, public_g: nil, public_h: nil)
click to toggle source
# 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
Public Instance Methods
encrypt(message, rand_k: nil)
click to toggle source
# 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