Advertisement
Inverth

Shamir

Dec 22nd, 2020
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.34 KB | None | 0 0
  1. import random
  2. def ln(X,Y):
  3.     sm = 0
  4.     for j in range(len(Y)):
  5.         p1=1
  6.         p2=1
  7.         for i in range(len(X)):
  8.             if j != i:
  9.                 p1=p1*(0 - X[i])
  10.                 p2=p2*(X[j] - X[i])
  11.             else:
  12.                 p1=p1*1
  13.                 p2=p2*1
  14.         sm = sm+Y[j]*p1/p2
  15.     return sm
  16.  
  17. def is_prime(n):
  18.     if n< 2:
  19.         return False
  20.     if n == 2:
  21.         return True
  22.     for i in range(2, int(n/2)):
  23.         if n % i == 0:
  24.             return False
  25.     return True
  26.  
  27. M = int(input("input secret"))
  28.  
  29. n=int(input(" number of all users: "))
  30. k=int(input(" number of users to recover: "))
  31. a =[]
  32. for i in range(k-1):
  33.     a.append(random.randint(2,10))
  34. print("result of a ",a)
  35. ki = []
  36. x = [i for i in random.sample(range(15,40),n)]
  37. print("x", x)
  38. for i in range(n):
  39.         sm = M
  40.         for j in range(k-1):
  41.             sm += a[j]*(x[i]**(k-j-1))            
  42.         ki.append(sm)
  43. print("ki",ki)
  44. stopslovo = ""
  45. while stopslovo != 'stop':
  46.     stopslovo = input("stop to break it")
  47.     X = []
  48.     Y = []
  49.     print("choose ", k, " users to recover the secret")
  50.     for i in range(k):
  51.         print("user ", i+1,"choose")
  52.         t = int(input())
  53.         X.append(x[t-1])
  54.         Y.append(ki[t-1])
  55.     print("X",X)
  56.     print("Y",Y)
  57.     print(ln(X,Y))
  58.     X.clear()
  59.     Y.clear()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement