Guest User

Untitled

a guest
Apr 24th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. require "crazy_math.rb"
  2.  
  3.  
  4. def modular_power(a,exp,mod)
  5. result = a
  6. (exp-1).times do
  7. result = (result * a) % mod
  8. end
  9. result
  10. end
  11.  
  12.  
  13. print "Generator:\t\t\t"
  14. puts generator = 7789
  15. #puts generator = 13
  16.  
  17. print "Prime:\t\t\t\t"
  18. puts prime = 1017473
  19. #puts prime = 997
  20.  
  21. print "Alice's secret:\t\t"
  22. puts alice_secret = 415492
  23. #puts alice_secret = 41
  24.  
  25. print "Bob's secret:\t\t\t"
  26. puts bob_secret = 725193
  27. #puts bob_secret = 71
  28.  
  29. print "Carlo's secret:\t\t"
  30. puts carol_secret = 598843
  31. #puts carol_secret = 51
  32.  
  33. #++++++++++++++++++++++++++++++++++++
  34. #first round
  35. #everybody broadcasts
  36.  
  37. #From Alice to the group
  38. print "from alice to group:\t"
  39. puts runde_1_alice_an_group = modular_power(generator, alice_secret, prime)
  40.  
  41. #From Bob to the group
  42. print "from bob to group:\t"
  43. puts runde_1_bob_an_group = modular_power(generator, bob_secret, prime)
  44.  
  45. #From Carol to the group
  46. print "from carol to group:\t"
  47. puts runde_1_carol_an_group = modular_power(generator, carol_secret, prime)
  48.  
  49. puts "ROUND TWO"
  50. puts "*************"
  51.  
  52. #From Alice to the group
  53. print "from alice to group\t"
  54. 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)
  55. #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)
  56.  
  57. #From Bob to the group
  58. print "from bob to group:\t"
  59. 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)
  60.  
  61. #From Carol to the group
  62. print "from carol to group:\t"
  63. 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)
  64.  
  65.  
  66. puts "GROUPKEY"
  67. puts "*************"
  68.  
  69.  
  70. #++++++++++++++++++++++++++++++++++++
  71. #and that's how they get the groupkey
  72.  
  73. print "alice's group Key:\t"
  74. 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
  75. puts alice_group_key%prime
  76.  
  77. print "bob's group Key:\t\t"
  78. 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
  79. puts bob_group_key%prime
  80.  
  81. print "carol's group Key:\t"
  82. 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
  83. puts carol_group_key%prime
Add Comment
Please, Sign In to add comment