class Sperm::Groups::Isomorphism
Provides isomorphism from (Z/(p-1)Z, +) to (Z/pZ \ {0}, *).
Attributes
add_group[R]
mul_group[R]
Public Class Methods
new(add_group, mul_group)
click to toggle source
# File lib/sperm/groups/isomorphism.rb, line 13 def initialize(add_group, mul_group) fail ArgumentError, 'unequal orders' unless add_group.order == mul_group.order @add_group = add_group @mul_group = mul_group end
Public Instance Methods
map(number)
click to toggle source
# File lib/sperm/groups/isomorphism.rb, line 19 def map(number) fail ArgumentError, 'not an element' unless add_group.include?(number) mul_group.generator.to_bn.mod_exp(number, mul_group.modulo).to_i end