#XOR def xor(a, b): # init result = [] # porownuje znaki for i in range(1, len(b)): if a[i] == b[i]: result.append('0') else: result.append('1') return ''.join(result) # dzielenie modulo 2 def divide(message, poly16): # Ilosc bitow dla operacji XOR 'na raz' step = len(poly16) # podzial krok po kroku temp = message[0 : step] while step < len(message): if temp[0] == '1': temp = xor(poly16, temp) + message[step] else: # jezeli 1 bit po lewej == 0 temp = xor('0'*step, temp) + message[step] # kolejny krok step += 1 if temp[0] == '1': temp = xor(poly16, temp) else: temp = xor('0'*step, temp) check = temp return check def encode(message, poly16): l_poly16 = len(poly16) # Dodajemy n-1 "0" do wiadomosci appended_message = message + '0'*(l_poly16-1) remainder = divide(appended_message, poly16) message_final = message + remainder print("calosc : ", message_final) def decode(message2, poly16): l_poly16 = len(poly16) appended_message2 = message2 remainder = divide(appended_message2, poly16) print("reszta : ", remainder) poly16 = "10001000000100001" print("podaj wiadomosc do zakodowania : ") message = str(raw_input()) encode(message, poly16) print("podaj wiadomosc do odkodowania : ") message2 = str(raw_input()) decode(message2, poly16)