Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require "crazy_math.rb"
- def modular_power(a,exp,mod)
- result = a
- (exp-1).times do
- result = (result * a) % mod
- end
- result
- end
- print "Generator:\t\t\t"
- puts generator = 7789
- #puts generator = 13
- print "Prime:\t\t\t\t"
- puts prime = 1017473
- #puts prime = 997
- print "Alice's secret:\t\t"
- puts alice_secret = 415492
- #puts alice_secret = 41
- print "Bob's secret:\t\t\t"
- puts bob_secret = 725193
- #puts bob_secret = 71
- print "Carlo's secret:\t\t"
- puts carol_secret = 598843
- #puts carol_secret = 51
- #++++++++++++++++++++++++++++++++++++
- #first round
- #everybody broadcasts
- #From Alice to the group
- print "from alice to group:\t"
- puts runde_1_alice_an_group = modular_power(generator, alice_secret, prime)
- #From Bob to the group
- print "from bob to group:\t"
- puts runde_1_bob_an_group = modular_power(generator, bob_secret, prime)
- #From Carol to the group
- print "from carol to group:\t"
- puts runde_1_carol_an_group = modular_power(generator, carol_secret, prime)
- puts "ROUND TWO"
- puts "*************"
- #From Alice to the group
- print "from alice to group\t"
- puts runde_2_alice_an_group = modular_power(((runde_1_bob_an_group * runde_1_carol_an_group.modular_inverse(prime))%prime), alice_secret ,prime)
- #puts runde_2_alice_an_group = modular_power((runde_1_bob_an_group * modular_power(runde_1_carol_an_group, prime-2, prime)), alice_secret ,prime)
- #From Bob to the group
- print "from bob to group:\t"
- puts runde_2_bob_an_group = modular_power(((runde_1_carol_an_group *runde_1_alice_an_group.modular_inverse(prime))%prime), bob_secret ,prime)
- #From Carol to the group
- print "from carol to group:\t"
- puts runde_2_carol_an_group = modular_power(((runde_1_alice_an_group *runde_1_bob_an_group.modular_inverse(prime))%prime), carol_secret ,prime)
- puts "GROUPKEY"
- puts "*************"
- #++++++++++++++++++++++++++++++++++++
- #and that's how they get the groupkey
- print "alice's group Key:\t"
- alice_group_key = ((modular_power(runde_1_carol_an_group, 3 *alice_secret, prime) *modular_power(runde_2_alice_an_group,2,prime))%prime) * runde_2_bob_an_group
- puts alice_group_key%prime
- print "bob's group Key:\t\t"
- bob_group_key = ((modular_power(runde_1_alice_an_group, 3 *bob_secret, prime) * modular_power(runde_2_bob_an_group,2,prime))%prime) * runde_2_carol_an_group
- puts bob_group_key%prime
- print "carol's group Key:\t"
- carol_group_key = ((modular_power(runde_1_bob_an_group, 3 * carol_secret, prime) * modular_power(runde_2_carol_an_group,2,prime))%prime) * runde_2_alice_an_group
- puts carol_group_key%prime
Add Comment
Please, Sign In to add comment