Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. import math
  2.  
  3.  
  4. class T52:
  5. def __init__(self, a, b, string):
  6. self.a = a
  7. self.b = b
  8. self.string = string
  9. self.m = len(string)
  10. self.afgesplitst = list(string)
  11. tijdelijk = []
  12. for x in self.afgesplitst:
  13. if x in tijdelijk:
  14. raise AssertionError("alfabet bevat herhaalde symbolen")
  15. else:
  16. tijdelijk.append(x)
  17. if math.gcd(a, self.m) != 1:
  18. raise AssertionError(f"{a} en {self.m} zijn niet copriem")
  19.  
  20. def codeerSymbool(self, letter):
  21. if letter not in self.afgesplitst:
  22. return letter
  23. else:
  24. cijfer = (self.a * self.afgesplitst.index(letter) + self.b) % self.m
  25. nieuweletter = self.afgesplitst[cijfer]
  26. return nieuweletter
  27.  
  28. def decodeerSymbool(self, letter):
  29. if letter not in self.afgesplitst:
  30. return letter
  31. else:
  32. result = ""
  33. for x in range(len(self.afgesplitst)):
  34. sommeke = (self.a * x) % self.m
  35. if sommeke == 1:
  36. eindIndex = x * (self.afgesplitst.index(letter) - self.b) % self.m
  37. return self.afgesplitst[eindIndex]
  38.  
  39. def codeer(self, string):
  40. lijst = list(string)
  41. result = ""
  42. for x in lijst:
  43. result += self.codeerSymbool(x)
  44. return result
  45.  
  46. def decodeer(self, string):
  47. lijst = list(string)
  48. result = ""
  49. for x in lijst:
  50. result += self.decodeerSymbool(x)
  51. return result
  52.  
  53. def __add__(self, other):
  54. if self.string != other.string:
  55. raise AssertionError("alfabetten zijn verschillend")
  56. else:
  57. tijdelijk1 = self.codeer(self.string)
  58. tijdelijk2 = other.codeer(tijdelijk1)
  59. return tijdelijk2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement