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