Advertisement
Falexom

Untitled

Feb 27th, 2024
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. import reedsolo
  2.  
  3.  
  4. def encode(text, n, k):
  5. rsc = reedsolo.RSCodec(n - k)
  6. encoded_bytes = rsc.encode(text)
  7. return encoded_bytes
  8.  
  9.  
  10. def decode(encoded_text, n, k):
  11. rsc = reedsolo.RSCodec(n - k)
  12. try:
  13. decoded_bytes = rsc.decode(encoded_text)
  14. return b''.join(decoded_bytes)
  15. except reedsolo.ReedSolomonError:
  16. return None
  17.  
  18.  
  19. def split_text(text):
  20. length = len(text)
  21. part_length = length // 3
  22. part1 = text[:part_length]
  23. part2 = text[part_length:2 * part_length]
  24. part3 = text[2 * part_length:]
  25. return part1, part2, part3
  26.  
  27. text = b'This is a sample text for testing Reed-Solomon codes.'
  28.  
  29. part1, part2, part3 = split_text(text)
  30. print(part1)
  31. print(part2)
  32. print(part3)
  33. # Кодируем каждую часть
  34. n = 80
  35. k = 40
  36. encoded_part1 = encode(part1, n, k)
  37. encoded_part2 = encode(part2, n, k)
  38. encoded_part3 = encode(part3, n, k)
  39.  
  40. encoded_part2_corrupted = encoded_part2[:10] + b'corrupted' + encoded_part2[10:]
  41. print(part2)
  42. print(encoded_part2)
  43. print(encoded_part2_corrupted)
  44.  
  45. recovered_part2 = decode(encoded_part2_corrupted, n, k)
  46.  
  47. if recovered_part2 is not None:
  48. print("Original Part 2:", part2)
  49. print("Recovered Part 2:", recovered_part2)
  50. else:
  51. print("Unable to recover Part 2.")
  52.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement