DALGLI0/Zadanie3
Klaudia Kandulska c8a2112082 Zadanie3
Wersja 1, dla wielomianów przedstawionych binarnie, bez ascii
2018-06-20 21:29:22 +00:00

78 lines
1.5 KiB
Plaintext

#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)