Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. from honeybadgermpc.ntl.helpers import interpolate, batch_vandermonde_interpolate, \
  2. fft_batch_interpolate, gao_interpolate
  3. from honeybadgermpc.field import GF
  4. from honeybadgermpc.wb_interpolate import make_encoder_decoder
  5.  
  6. import random
  7. import time
  8.  
  9. p = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001
  10. field = GF.get(p)
  11. t = 80
  12. n = 3 * t + 1
  13. k = t + 1
  14. int_msg = [random.randint(0, p - 1) for _ in range(k)]
  15. x = list(range(1, n + 1))
  16.  
  17.  
  18. def timeit(f, n=1):
  19. start_time = time.time()
  20. for i in range(n):
  21. f()
  22. end_time = time.time()
  23. print("%.6f seconds\tTotal: %.6f seconds" % ((end_time - start_time) / n,
  24. end_time - start_time))
  25.  
  26.  
  27. def corrupt(message, num_errors, num_nones, min_val=0, max_val=131):
  28. """
  29. Inserts random corrupted values
  30. """
  31. message = list.copy(message)
  32. assert (len(message) >= num_errors +
  33. num_nones), "too much errors and none elements!"
  34. indices = random.sample(list(range(len(message))), num_errors + num_nones)
  35. for i in range(0, num_errors):
  36. message[indices[i]] = random.randint(min_val, max_val)
  37. for i in range(0, num_nones):
  38. message[indices[i + num_errors]] = None
  39. return message
  40.  
  41.  
  42. if __name__ == "__main__":
  43. enc, dec, _ = make_encoder_decoder(n, k, p)
  44. emax = (n - 2 * t - 1) // 2
  45.  
  46. encoded = [sum(int_msg[j] * pow(x[i], j, p) for j in range(k)) % p
  47. for i in range(n)]
  48.  
  49. corrupted = corrupt(encoded, num_errors=emax, num_nones=0)
  50.  
  51. print("n = ", n)
  52. print("All python")
  53. timeit(lambda: dec(corrupted, debug=False), 10)
  54.  
  55. print("Gao")
  56. timeit(lambda: gao_interpolate(x, encoded, k, p), 10)
  57.  
  58. decoded = dec(corrupted, debug=False)
  59. assert decoded == int_msg
  60.  
  61. decoded, _ = gao_interpolate(x, encoded, k, p)
  62. assert decoded == int_msg
  63. print("All checks passed")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement