Ec 325 Assignment
Ec 325 Assignment
UE21EC342BA1
MATHEMATICS FOR CRYPTOGRAPHY
Name: VARSHANA P
SRN: PES1UG21EC325
Section: ‘F’
Combined Transposition Cipher:
Combined Transposition Cipher
Code
def cipher():
pattern=input("Enter the pattern: ")
n=int(input("Enter block size: "))
a=[]
count=0
while len(pattern)%n!=0:
pattern=pattern+"z"
for i in range(n):
b=[]
for j in range(i,len(pattern),n):
b.append(pattern[j])
a.append(b)
key=input("Enter encryption key for columns 1,2,3,... respectively: ")
c=[]
for i in range(n):
c.append(a[key.find(str(i+1))])
cipher=""
for i in c:
for j in i:
cipher=cipher+j
print(cipher)
def decipher():
cipher=input("Enter the cipher: ")
n = int(input("Enter block size: "))
key=input("Enter key used for encryption: ")
count=0
a=[]
b=[]
for i in cipher:
count = count + 1
b.append(i)
if count == len(cipher) / n:
a.append(b)
b=[]
count=0
p=[]
for i in key:
j=int(i)-1
p.append(a[j])
pattern=""
for i in range(len(p[0])):
for j in range(len(p)):
pattern=pattern+p[j][i]
while pattern[-1]=='z':
pattern=pattern[0:len(pattern)-1]
print(pattern)
cipher()
decipher()
OUTPUT:
Extended Euclidean algorithm:
Code
def extended_euclidean(r1,r2):
s1=1
s2=0
t1=0
t2=1
while r2!=0:
q=r1//r2
r=r1%r2
r1=r2
r2=r
s=s1-q*s2
t=t1-q*t2
s1=s2
s2=s
t1=t2
t2=t
print("gcd=",r1,"\ns=",s1,"\nt=",t1)
a=int(input("Enter the 1st number: "))
b=int(input("Enter the 2nd number: "))
extended_euclidean(a,b)
OUTPUT:
OUTPUT:
Chinese remainder theorem:
Code
def inverse(mod,key):
t1=0
t2=1
copy=mod
while key!=0:
q=mod//key
r=mod%key
mod=key
key=r
t=t1-q*t2
t1=t2
t2=t
if t1<0:
t1=copy+t1
return t1
def chinese_remainder(m,a):
prod=1
for i in m:
prod*=i
M=[]
M_1 = []
for i in m:
M.append(prod/i)
M_1.append(inverse(i,prod/i))
x=0
for i in range(len(m)):
x+=(a[i]*M[i]*M_1[i])
x-=(int(x/prod)*prod)
return x
if __name__=="__main__":
n=int(input("Enter number of inputs: "))
m=[]
a=[]
for i in range(n):
m.append(int(input("Enter divisor value: ")))
a.append(int(input("Enter corresponding remainder value: ")))
print("Answer = ",chinese_remainder(m,a))
OUTPUT: