def findChecksum(SentMessage, k):
c1 = SentMessage[0:k]
c2 = SentMessage[k:2*k]
c3 = SentMessage[2*k:3*k]
c4 = SentMessage[3*k:4*k]
Sum = bin(int(c1, 2)+int(c2, 2)+int(c3, 2)+int(c4, 2))[2:]
if(len(Sum) > k):
x = len(Sum)-k
Sum = bin(int(Sum[0:x], 2)+int(Sum[x:], 2))[2:]
if(len(Sum) < k):
Sum = '0'*(k-len(Sum))+Sum
Checksum = ''
for i in Sum:
if(i == '1'):
Checksum += '0'
else:
Checksum += '1'
return Checksum
def checkReceiverChecksum(ReceivedMessage, k, Checksum):
c1 = ReceivedMessage[0:k]
c2 = ReceivedMessage[k:2*k]
c3 = ReceivedMessage[2*k:3*k]
c4 = ReceivedMessage[3*k:4*k]
ReceiverSum = bin(int(c1, 2)+int(c2, 2)+int(Checksum, 2) +
int(c3, 2)+int(c4, 2)+int(Checksum, 2))[2:]
if(len(ReceiverSum) > k):
x = len(ReceiverSum)-k
ReceiverSum = bin(int(ReceiverSum[0:x], 2)+int(ReceiverSum[x:], 2))[2:]
ReceiverChecksum = ''
for i in ReceiverSum:
if(i == '1'):
ReceiverChecksum += '0'
else:
ReceiverChecksum += '1'
return ReceiverChecksum
SentMessage = "10010101011000111001010011101100"
k = 8
ReceivedMessage = "10000101011000111001010011101101"
Checksum = findChecksum(SentMessage, k)
ReceiverChecksum = checkReceiverChecksum(ReceivedMessage, k, Checksum)
print("SENDER SIDE CHECKSUM: ", Checksum)
print("RECEIVER SIDE CHECKSUM: ", ReceiverChecksum)
if(int(ReceiverChecksum, 2) == 0):
print("Receiver Checksum is equal to 0. Therefore,")
print("STATUS: ACCEPTED")
else:
print("Receiver Checksum is not equal to 0. Therefore,")
print("STATUS: ERROR DETECTED")