CS 303 Assignment 2Due Tue. May 19 by 11:59 pmName: Email:Instructions: Fill in your name and email. Answer the questions in this worksheet and use webct to submit your completed worksheet. Your work must be done individually. There are seven questions with point amounts indicated below. Questions 4-6 are from the optional lab 3. You should read through the review material on linear algebra and matrices from the lab along with the discussion of Hill Cyphers.Question 1 [10 points] (Trace RSA)In thi squestion, you are to trace through several examples of encryption and decryption using the function Encrypt that implements RSA. 0) Study the Maple functions that were given to implement RSA and review the example provided.1) Generate a 10 bit key (10 bits for n) using GenerateKey.2) Create an input string3) Encrypt and decrypt the string using the Encrypt function. Verify that the original message is returned.4) Trace through the individual steps, by calling the intermediate functions individually, for encryption and decryption done in (3).restart;RSA ImplementationConverting between Strings and IntegersIn order to implement the RSA algorithm, we need to be able to convert between strings and integers. The followingprocedures do this. The conversion is one to one and onto, so that every string is an integer and every integer is a string.Here are the allowed characters. Note that there are exactly 100 (this requires the inclusion of some non-printable characters like escape = \134e). The reason for including exactly 100 characters is to ensure that every encrypted message can beprinted as a string. We convert back and forth between strings and integers by writing each character as a two digit numberand concatentating them together.PossibilityString := "abcdefghijklmnopqrstuvwxyz0123456789!.,? ABCDEFGHIJKLMNOPQRSTUVWXYZ@#$%^&*()_-+={[}]~\134"\134'\134`:;></|\134\134\134a\134b\134e\134n\134t";
#Procedure to return the code of an string consisting of a single character
#surrounded by back quotes.
charcode := proc(chr)
local n,i;
option remember;
n := length(PossibilityString);
for i to n while substring(PossibilityString,i..i) <> chr do od;
if i>n
then ERROR(`unable to find`,chr,` in lookup table`);
else
RETURN(i-1);
fi;
end; length(PossibilityString);charcode("\134t");charcode("a");charcode("P");PossibilityString[1];PossibilityString[75];#Procedure to return an integer corresponding to the character string str.
`convert/Block` := proc(str)
local n,i,k,maxnumdigits;
if not(type(str,string)) then ERROR("only strings can be converted") fi;
n := length(str);
k := length(PossibilityString);
maxnumdigits := trunc(evalf(log[10](k-1)))+1;
add(charcode(substring(str,i..i))*
(10^maxnumdigits)^(n-i),i=1..n);
end; str := "Hello";charcode(substring(str,1..1));nstr := convert(str,Block);for i from 1 to length(str) do convert(substring(str,i..i),Block);od;48*10^8 + 4*10^6 + 11*10^4 + 11*10^2 + 14;`convert/Blockstring` := proc(n)
local k, maxnumdigits,i,result;
if (not(type(n,integer)))
then ERROR("only integers can be converted")
fi;
#Base of recursion -- n=0 is the null string
if n=0 then RETURN(""); fi;
k := length(PossibilityString);
#Compute width (in digits) of a typical character.
maxnumdigits := trunc(evalf(log[10](k-1)))+1;
#Get the last few digits.... the last character's index.
i := n mod 10^maxnumdigits;
#Paste it onto the rest of the answer
result := cat(convert(iquo(n, 10^maxnumdigits),Blockstring),
substring(PossibilityString, (i+1)..(i+1)));
end;convert(nstr,Blockstring);myrand := rand(10^100):myrand();convert(%,Blockstring);convert(%,Block);length(%);RSA Algorithms RandPrime := proc(myrand)
#
# Inputs:
# myrand is a random number generator.
# RandPrime is a random number, that is very likely prime.
#
local p;
p := myrand(); while not isprime(p) do p := myrand() od;
RETURN(p);
end; GenerateKey := proc(k::posint,n::name,e::name,d::name)
#
# Generate Key to be used in the RSA Public Key Cryptosystem.
# The Encryption key is the pair of integers (e,n).
# The Decryption key is the pair of integers (d,n).
#
# Inputs:
# k is a positve integer.
# Outputs: (must be names passed in quotes).
# n = pq is the product of two random prime numbers <= k. n is 2*k digits.
# e is a random number, in the range [1..phi(n)-1], relatively prime to phi(n).
# d is the multiplicative inverse of e mod phi(n).
#
local kp,np,p,q,nphi,te,myrand;
# Create psuedo-random number generator.
myrand := rand(1..10^k-1);
# Generate distinct random prime numbers p and q in the range [1..k].
p := RandPrime(myrand); q := RandPrime(myrand); np := p*q;
while (p = q) or (np > 10^(2*k)) or (np < 75*10^(2*k-2)) do
p := RandPrime(myrand); q := RandPrime(myrand); np := p*q;
end do;
# Compute phi(n) where n = pq.
nphi := (p-1)*(q-1);
# Compute a random number e, in the range [1..phi(n)-1], with gcd(n,phi(n)) = 1.
myrand := rand(1..nphi-1);
te := myrand();
while not igcd(te,nphi) = 1 do te := myrand() end do;
# Return output varaibles
n := np; e := te; d := (1/te) mod nphi;
end;
Blocki := proc(M,k)
#
# Convert an integer into a list of digits base 10^k.
# Inputs:
# M is a positive integer and k is an integer.
# Block = the list [L1..Ln], where M = sum(Li*10^(n-i),i=1..n), and
# 0 <= L[i] < 10^k.
#
local L,Mp;
L := []; Mp := M;
while Mp <> 0 do L := [irem(Mp,10^k,'Mp'),op(L)]; od;
RETURN(L);
end;Unblocki := proc(L,k)
#
# Convert a list of integers into an integer.
# Inputs:
# L = [L1..Ln] is a list of integers, with 0 <= Li < 10^k.
# k is a positve integer.
# Outputs:
# Unblock is an integer = sum(L[i]*10^(n-i),i=1..n).
#
local i,n;
n := nops(L);
RETURN(sum(L[i]*10^(k*(n - i)),i=1..n));
end;Crypt := proc(L,e,n)
#
# Encrypt or Decrypt using the RSA Public Key cryptosystem.
# Inputs:
# L = [L1..Ln] is a list of integers, with 0 <= Li < n.
# e and n are non-negative integer.
# Outputs:
# Crypt is the list = [M1..Mn], where Mi = Power(Li,e) mod n.
#
map((x,e,n) -> Power(x,e) mod n,L,e,n);
end;GenerateKey(2,'n','e','d');n;Encrypt := proc(str,e,n) local nstr, M, C, ncstr, k; nstr := convert(str,Block); k := length(n); M := Blocki(nstr,k); C := Crypt(M,e,n); ncstr := Unblocki(C,k); return convert(ncstr,Blockstring);end;Question 2 [10 points] (Break RSA)In this question you have access to someone's public key (e,n) and you are to determine the secret key (d,n) and use the secret key to decypher the given ciphertext.restart;RSA ImplementationConverting between Strings and IntegersIn order to implement the RSA algorithm, we need to be able to convert between strings and integers. The followingprocedures do this. The conversion is one to one and onto, so that every string is an integer and every integer is a string.Here are the allowed characters. Note that there are exactly 100 (this requires the inclusion of some non-printable characters like escape = \134e). The reason for including exactly 100 characters is to ensure that every encrypted message can beprinted as a string. We convert back and forth between strings and integers by writing each character as a two digit numberand concatentating them together.PossibilityString := "abcdefghijklmnopqrstuvwxyz0123456789!.,? ABCDEFGHIJKLMNOPQRSTUVWXYZ@#$%^&*()_-+={[}]~\134"\134'\134`:;></|\134\134\134a\134b\134e\134n\134t";
#Procedure to return the code of an string consisting of a single character
#surrounded by back quotes.
charcode := proc(chr)
local n,i;
option remember;
n := length(PossibilityString);
for i to n while substring(PossibilityString,i..i) <> chr do od;
if i>n
then ERROR(`unable to find`,chr,` in lookup table`);
else
RETURN(i-1);
fi;
end; length(PossibilityString);charcode("\134t");charcode("a");charcode("P");PossibilityString[1];PossibilityString[75];#Procedure to return an integer corresponding to the character string str.
`convert/Block` := proc(str)
local n,i,k,maxnumdigits;
if not(type(str,string)) then ERROR("only strings can be converted") fi;
n := length(str);
k := length(PossibilityString);
maxnumdigits := trunc(evalf(log[10](k-1)))+1;
add(charcode(substring(str,i..i))*
(10^maxnumdigits)^(n-i),i=1..n);
end; str := "Hello";charcode(substring(str,1..1));nstr := convert(str,Block);for i from 1 to length(str) do convert(substring(str,i..i),Block);od;48*10^8 + 4*10^6 + 11*10^4 + 11*10^2 + 14;`convert/Blockstring` := proc(n)
local k, maxnumdigits,i,result;
if (not(type(n,integer)))
then ERROR("only integers can be converted")
fi;
#Base of recursion -- n=0 is the null string
if n=0 then RETURN(""); fi;
k := length(PossibilityString);
#Compute width (in digits) of a typical character.
maxnumdigits := trunc(evalf(log[10](k-1)))+1;
#Get the last few digits.... the last character's index.
i := n mod 10^maxnumdigits;
#Paste it onto the rest of the answer
result := cat(convert(iquo(n, 10^maxnumdigits),Blockstring),
substring(PossibilityString, (i+1)..(i+1)));
end;convert(nstr,Blockstring);myrand := rand(10^100):myrand();convert(%,Blockstring);convert(%,Block);length(%);RSA Algorithms RandPrime := proc(myrand)
#
# Inputs:
# myrand is a random number generator.
# RandPrime is a random number, that is very likely prime.
#
local p;
p := myrand(); while not isprime(p) do p := myrand() od;
RETURN(p);
end; GenerateKey := proc(k::posint,n::name,e::name,d::name)
#
# Generate Key to be used in the RSA Public Key Cryptosystem.
# The Encryption key is the pair of integers (e,n).
# The Decryption key is the pair of integers (d,n).
#
# Inputs:
# k is a positve integer.
# Outputs: (must be names passed in quotes).
# n = pq is the product of two random prime numbers <= k. n is 2*k digits.
# e is a random number, in the range [1..phi(n)-1], relatively prime to phi(n).
# d is the multiplicative inverse of e mod phi(n).
#
local kp,np,p,q,nphi,te,myrand;
# Create psuedo-random number generator.
myrand := rand(1..10^k-1);
# Generate distinct random prime numbers p and q in the range [1..k].
p := RandPrime(myrand); q := RandPrime(myrand); np := p*q;
while (p = q) or (np > 10^(2*k)) or (np < 75*10^(2*k-2)) do
p := RandPrime(myrand); q := RandPrime(myrand); np := p*q;
end do;
# Compute phi(n) where n = pq.
nphi := (p-1)*(q-1);
# Compute a random number e, in the range [1..phi(n)-1], with gcd(n,phi(n)) = 1.
myrand := rand(1..nphi-1);
te := myrand();
while not igcd(te,nphi) = 1 do te := myrand() end do;
# Return output varaibles
n := np; e := te; d := (1/te) mod nphi;
end;
Blocki := proc(M,k)
#
# Convert an integer into a list of digits base 10^k.
# Inputs:
# M is a positive integer and k is an integer.
# Block = the list [L1..Ln], where M = sum(Li*10^(n-i),i=1..n), and
# 0 <= L[i] < 10^k.
#
local L,Mp;
L := []; Mp := M;
while Mp <> 0 do L := [irem(Mp,10^k,'Mp'),op(L)]; od;
RETURN(L);
end;Unblocki := proc(L,k)
#
# Convert a list of integers into an integer.
# Inputs:
# L = [L1..Ln] is a list of integers, with 0 <= Li < 10^k.
# k is a positve integer.
# Outputs:
# Unblock is an integer = sum(L[i]*10^(n-i),i=1..n).
#
local i,n;
n := nops(L);
RETURN(sum(L[i]*10^(k*(n - i)),i=1..n));
end;Crypt := proc(L,e,n)
#
# Encrypt or Decrypt using the RSA Public Key cryptosystem.
# Inputs:
# L = [L1..Ln] is a list of integers, with 0 <= Li < n.
# e and n are non-negative integer.
# Outputs:
# Crypt is the list = [M1..Mn], where Mi = Power(Li,e) mod n.
#
map((x,e,n) -> Power(x,e) mod n,L,e,n);
end;GenerateKey(2,'n','e','d');n;Encrypt := proc(str,e,n) local nstr, M, C, ncstr, k; nstr := convert(str,Block); k := length(n); M := Blocki(nstr,k); C := Crypt(M,e,n); ncstr := Unblocki(C,k); return convert(ncstr,Blockstring);end;n := 7660667891964681342229581758160298975411;e := 2875500547395035340238947036342505627883;M := 69669548359529679781650615597066177196185738199745639131420950990573260278118717622652531058841194062768039872058123833775722218323582960397436168267080882452592275074849411940891942644526924645144547725713709975699114450009037741862855388901707656748620863217721391457148399840474989331303396267238231548502126647286097;cstr := convert(M,Blockstring);Question 3 [20 points] (Chinese Remainder Theorem)Exercise 4.11 from the text - use Maple's chrem command and then implement algorithm 4.5 to perform the computation. Note that in algorithm 4.5 you do not have to implement INVERSE - you can simply use Maple to compute the modular inverse.Also do exercises 4.15 and 4.16.Question 4 [15 points] (Implement Block Cypher using Hill)Using block length 8 implement a block cypher using a Hill cypher for each block. You will write two Maple procedures: 1) one to encypher strings of length equal to the block size, and 2) one that encyphers strings of arbitrary length by applying the first procedure to consecutive substrings of length equal to the block size. Note that if the length of the string is not a multiple of the block size, then you will need to pad the string with extra blanks.restart;with(LinearAlgebra): with(StringTools):Letter2Number := proc(str,Convert)
local i, L; L := []; for i from StringTools:-Length(str) by -1 to 1 do L := [Convert[str[i]],op(L)]; end do; return L;end;Number2Letter := proc(L,alphabet) local i, str; str := ""; for i from 1 to nops(L) do str := cat(alphabet[L[i]+1],str); end do; return StringTools:-Reverse(str);end;alphabet := cat(Iota("a".."z")," ");Convert := table();for i from 1 to Length(alphabet) do Convert[alphabet[i]] := i-1;end do:1) Find an invertible matrix of dimension 8 with entries in LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEoJiM4NDg0O0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUkjbW5HRiQ2JFEjMjdGJy9GNlEnbm9ybWFsRidGPi8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnLUkjbW9HRiQ2LVEiLkYnRj4vJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkkvJSlzdHJldGNoeUdGSS8lKnN5bW1ldHJpY0dGSS8lKGxhcmdlb3BHRkkvJS5tb3ZhYmxlbGltaXRzR0ZJLyUnYWNjZW50R0ZJLyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGWC1GRDYtUSJ+RidGPkZHRkpGTEZORlBGUkZURlZGWUZlbkY+Find its inverse and verify that multiplying the first matrix by its inverse returns the identity matrix of size 8. Do not forget to reduce mod 27.Implement a Maple procedure, HillCypher, which takes as input an invertible LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RKCZ0aW1lcztGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EsMC4yMjIyMjIyZW1GJy8lJ3JzcGFjZUdGTEYrLUY2Ni1RIn5GJ0Y5RjtGPkZARkJGREZGRkgvRktRJjAuMGVtRicvRk5GU0Y5matrix and a string of length LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIi5GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGTEY5 The matrix should have entries in LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEoJiM4NDg0O0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUYvNiVRIm1GJ0YyRjUvRjZRJ25vcm1hbEYnLyUvc3Vic2NyaXB0c2hpZnRHUSIwRictSSNtb0dGJDYtUSIsRidGPS8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGNC8lKXN0cmV0Y2h5R0ZILyUqc3ltbWV0cmljR0ZILyUobGFyZ2VvcEdGSC8lLm1vdmFibGVsaW1pdHNHRkgvJSdhY2NlbnRHRkgvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJy1GQzYtUSJ+RidGPUZGL0ZKRkhGS0ZNRk9GUUZTRlUvRllGV0Y9where LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEibUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= is the length of the alphabet from which the string was encoded. You may assume that the above alphabet is used and hence may use the functions Letter2Number and Number2Letter.HillCypher := proc(A,str)end;Test your function by encyphering and decyphering some sample strings.Implement a Maple function that encyphers and decyphers strings of arbitrary length using the function HillCypher to encypher and decypher consecutive substrings whose length is equal to the blocksize.Question 5 [15 points] (Breaking a Hill Cypher given the Black Box)In this question you have captured a encryption function called BlackBox. You believe that the black box uses a Hill Cypher. Your goal is to verify that BlackBox uses a Hill Cypher and use it find the matrix used in the Hill cypher. This will enable you to decrypt the following string: LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbXNHRiQ2I1FBY2N1eGplYWN5cWVzeWR1a296dGx0cG1ucW11enp1fnZGJ0YrL0YzUSdub3JtYWxGJw==restart;with(LinearAlgebra): with(StringTools):Letter2Number := proc(str,Convert)
local i, L; L := []; for i from StringTools:-Length(str) by -1 to 1 do L := [Convert[str[i]],op(L)]; end do; return L;end;Number2Letter := proc(L,alphabet) local i, str; str := ""; for i from 1 to nops(L) do str := cat(alphabet[L[i]+1],str); end do; return StringTools:-Reverse(str);end;alphabet := cat(Iota("a".."z")," ");Convert := table();for i from 1 to Length(alphabet) do Convert[alphabet[i]] := i-1;end do:standardbasis := proc(n,i) local V; V := Vector(n); V[i] := 1; return V;end;BlackBox is a maple function that takes a vector as input and returns a vector. It assumes that the input vector has size equal to a power of two and that the elements of the vector are in LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEoJiM4NDg0O0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUkjbW5HRiQ2JFEjMjdGJy9GNlEnbm9ybWFsRidGPi8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnRj4= and correspond to our normal numeric coding of strings.Your goal is to figure out how to break BlackBox and use it to decrypt the following cyphertext.cypher := "ccuxjeacyqesydukoztltpmnqmuzzu v";BlackBox := proc(M) local n, m, C1, C2; n := Dimension(M); m := n/2; if (n = 2) then
return <18*M[1] + 22*M[2] mod 27,17*M[1]+20*M[2] mod 27>;
else C1 := BlackBox(M[1..m]); C2 := BlackBox(M[m+1..n]); return <18*C1+22*C2 mod 27,17*C1+20*C2 mod 27>; end if;end;First verify that BlackBox is linear. Then use standardbasis above to find the LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYoLUkjbW5HRiQ2JFEjMzJGJy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRictSSNtb0dGJDYtUSJ+RidGLy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGOC8lKXN0cmV0Y2h5R0Y4LyUqc3ltbWV0cmljR0Y4LyUobGFyZ2VvcEdGOC8lLm1vdmFibGVsaW1pdHNHRjgvJSdhY2NlbnRHRjgvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZHLUYzNi1RKCZ0aW1lcztGJ0YvRjZGOUY7Rj1GP0ZBRkMvRkZRLDAuMjIyMjIyMmVtRicvRklGTkYrRjJGLw==matrix that corresponds to BlackBox when the input vector is of size 32.Use the matrix you found to break the Hill Cypher and decrypt the above cyphertext.Question 6 [15 points] (Breaking a Hill Cypher given Intercepted Messages)In this question you have intercepted a sequence of cyphertext and plaintext blocks corresponding to a Hill cypher of size 8. Your goal is to use this information to construct the matrix corresponding to the Hill cypher and consequently decrypt the following cyphertext: LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbXNHRiQ2I1Epd2F1d2ttcWdGJy1JI21vR0YkNi1RIi5GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkEvJSlzdHJldGNoeUdGQS8lKnN5bW1ldHJpY0dGQS8lKGxhcmdlb3BHRkEvJS5tb3ZhYmxlbGltaXRzR0ZBLyUnYWNjZW50R0ZBLyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGUEY9In the transcript below you have the output from a sequence of calls to HillCypher, but you do not have the matrix LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEiQUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIn5GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGTEY5used by the cypher. You know that the alphabet is our standard alphabet with 27 symbols.restart;with(LinearAlgebra): with(StringTools):Letter2Number := proc(str,Convert)
local i, L; L := []; for i from StringTools:-Length(str) by -1 to 1 do L := [Convert[str[i]],op(L)]; end do; return L;end;Number2Letter := proc(L,alphabet) local i, str; str := ""; for i from 1 to nops(L) do str := cat(alphabet[L[i]+1],str); end do; return StringTools:-Reverse(str);end;alphabet := cat(Iota("a".."z")," ");Convert := table();for i from 1 to Length(alphabet) do Convert[alphabet[i]] := i-1;end do:standardbasis := proc(n,i) local V; V := Vector(n); V[i] := 1; return V;end;cypher := "wauwkmqg";lstr := "once upon a time you dressed so fine you through the bums a dime in your prime didnt you";Length(lstr);Do not reexecute this statement has you do not have A and it will not be able to evaluate.for i from 0 to 7 do str || i := lstr[i*8+1..(i+1)*8]; c ||i := HillCypher(A,str||i);end do;str0 := "once upo"; c0 := "ftlvyidy"; str1 := "n a time"; c1 := "erszsdwg";str2 := " you dre"; c2 := "esi gnmb"; str3 := "ssed so "; c3 := " xemt xl";str4 := "fine yo"; c4 := "fbfjyqhm"; str5 := "u throug"; c5 := "pzwarbop"; str6 := "h the bu"; c6 := "cvivp zh"; str7 := "ms a dim"; c7 := "vnvkphys";Find the numeric vectors corresponding to all of the intercepted plaintext and cyphertext blocks.Verify that the 8 vectors obtained from the plaintext are a basis for the vector space of 8 tuples.Use the above information to construct the matrix that corresponds to the Hill cypher. Hint: Construct the matrix LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEiUEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= such that LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEkc3RyRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUYjNiQtRi82JVEiaUYnRjJGNS9GNlEnbm9ybWFsRicvJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy1JI21vR0YkNi1RIj1GJ0Y9LyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZILyUpc3RyZXRjaHlHRkgvJSpzeW1tZXRyaWNHRkgvJShsYXJnZW9wR0ZILyUubW92YWJsZWxpbWl0c0dGSC8lJ2FjY2VudEdGSC8lJ2xzcGFjZUdRLDAuMjc3Nzc3OGVtRicvJSdyc3BhY2VHRlctSShtc3Vic3VwR0YkNigtRi82JVEjUGVGJ0YyRjVGOC1GIzYkLUkjbW5HRiQ2JFEiOEYnRj1GPS8lMXN1cGVyc2NyaXB0c2hpZnRHRkFGPy9JK21zZW1hbnRpY3NHRiRRLFtub25lLG5vbmVdRidGPQ==LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbW9HRiQ2LVEiLkYnLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGNC8lKXN0cmV0Y2h5R0Y0LyUqc3ltbWV0cmljR0Y0LyUobGFyZ2VvcEdGNC8lLm1vdmFibGVsaW1pdHNHRjQvJSdhY2NlbnRHRjQvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZDRi8= Let LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEiQUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIn5GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGTEY5be the unknown matrix, then LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYpLUklbXN1cEdGJDYlLUkjbWlHRiQ2JVEiUEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYlLUkjbW9HRiQ2LVEqJnVtaW51czA7RicvRjZRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZCLyUpc3RyZXRjaHlHRkIvJSpzeW1tZXRyaWNHRkIvJShsYXJnZW9wR0ZCLyUubW92YWJsZWxpbWl0c0dGQi8lJ2FjY2VudEdGQi8lJ2xzcGFjZUdRLDAuMjIyMjIyMmVtRicvJSdyc3BhY2VHRlEtSSNtbkdGJDYkUSIxRidGPkY+LyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJy1JJW1zdWJHRiQ2JS1GLzYlUSJjRidGMkY1LUYjNiQtRi82JVEiaUYnRjJGNUY+LyUvc3Vic2NyaXB0c2hpZnRHRlotRjs2LVEiPUYnRj5GQEZDRkVGR0ZJRktGTS9GUFEsMC4yNzc3Nzc4ZW1GJy9GU0Zmby1JKG1mZW5jZWRHRiQ2JC1GIzYlRistRi82JVEjQVBGJ0YyRjVGPkY+LUkobXN1YnN1cEdGJDYoLUYvNiVRImVGJ0YyRjVGW28tRiM2JC1GVTYkUSI4RidGPkY+RlhGYG8vSSttc2VtYW50aWNzR0YkUSxbbm9uZSxub25lXUYnLUY7Ni1RIixGJ0Y+RkAvRkRGNEZFRkdGSUZLRk0vRlBRJjAuMGVtRicvRlNRLDAuMzMzMzMzM2VtRidGPg== and you can recover the "conjugated" matrix LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkjbWlHRiQ2JVEiQUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIidGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EsMC4xMTExMTExZW1GJy8lJ3JzcGFjZUdRJjAuMGVtRictRjY2LVEifkYnRjlGO0Y+RkBGQkZERkZGSC9GS0ZPRk0tRjY2LVEiPUYnRjlGO0Y+RkBGQkZERkZGSC9GS1EsMC4yNzc3Nzc4ZW1GJy9GTkZYRjk=LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUklbXN1cEdGJDYlLUkjbWlHRiQ2JVEiUEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYlLUkjbW9HRiQ2LVEqJnVtaW51czA7RicvRjZRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZCLyUpc3RyZXRjaHlHRkIvJSpzeW1tZXRyaWNHRkIvJShsYXJnZW9wR0ZCLyUubW92YWJsZWxpbWl0c0dGQi8lJ2FjY2VudEdGQi8lJ2xzcGFjZUdRLDAuMjIyMjIyMmVtRicvJSdyc3BhY2VHRlEtSSNtbkdGJDYkUSIxRidGPkY+LyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJy1GLzYlUSNBUEYnRjJGNUY+ and from LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEiQUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIidGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EsMC4xMTExMTExZW1GJy8lJ3JzcGFjZUdRJjAuMGVtRidGOQ== you construct LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkjbWlHRiQ2JVEiQUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIi5GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGTC1GNjYtUSJ+RidGOUY7Rj5GQEZCRkRGRkZIRkpGTUZPRjk=Note that matrix conjugation corresponds to representing the same linear transformation in two different bases, where LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEiUEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= is the change of basis matrix.Question 7 [20 points] (Euler's Criterion)Exercises 6.8, 6.11, and 6.12 from the text.Exercise 6.8) Prove that if LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEicEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= is prime and if LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYoLUklbXN1cEdGJDYlLUkjbWlHRiQ2JVEiaUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYlLUkjbW5HRiQ2JFEiMkYnL0Y2USdub3JtYWxGJ0YyRjUvJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnLUkjbW9HRiQ2LVEsJkNvbmdydWVudDtGJ0Y+LyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZJLyUpc3RyZXRjaHlHRkkvJSpzeW1tZXRyaWNHRkkvJShsYXJnZW9wR0ZJLyUubW92YWJsZWxpbWl0c0dGSS8lJ2FjY2VudEdGSS8lJ2xzcGFjZUdRLDAuMjc3Nzc3OGVtRicvJSdyc3BhY2VHRlgtRiw2JS1GLzYlUSJqRidGMkY1RjhGQC1JKG1mZW5jZWRHRiQ2JC1GIzYmLUZENi9RJG1vZEYnLyUlYm9sZEdGNC9GNlElYm9sZEYnLyUrZm9udHdlaWdodEdGZW9GR0ZKRkxGTkZQRlJGVC9GV1EmMC4wZW1GJy9GWkZpby1GRDYtUSJ+RidGPkZHRkpGTEZORlBGUkZURmhvRmpvLUYvNiVRInBGJ0YyRjVGPkY+LUZENi1RIixGJ0Y+RkcvRktGNEZMRk5GUEZSRlRGaG8vRlpRLDAuMzMzMzMzM2VtRidGPg== then LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkjbWlHRiQ2JVEiaUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RLCZDb25ncnVlbnQ7RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRLDAuMjc3Nzc3OGVtRicvJSdyc3BhY2VHRkwtRiw2JVEiakYnRi9GMi1GNjYtUSJ+RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSYwLjBlbUYnL0ZORlZGOQ==or LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkjbW9HRiQ2LVEqJnVtaW51czA7RicvJSxtYXRodmFyaWFudEdRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y0LyUpc3RyZXRjaHlHRjQvJSpzeW1tZXRyaWNHRjQvJShsYXJnZW9wR0Y0LyUubW92YWJsZWxpbWl0c0dGNC8lJ2FjY2VudEdGNC8lJ2xzcGFjZUdRLDAuMjIyMjIyMmVtRicvJSdyc3BhY2VHRkMtSSNtaUdGJDYlUSJqRicvJSdpdGFsaWNHUSV0cnVlRicvRjBRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYkLUYjNiYtRiw2L1EkbW9kRicvJSVib2xkR0ZML0YwUSVib2xkRicvJStmb250d2VpZ2h0R0ZaRjJGNUY3RjlGO0Y9Rj8vRkJRJjAuMGVtRicvRkVGaG4tRiw2LVEifkYnRi9GMkY1RjdGOUY7Rj1GP0ZnbkZpbi1GRzYlUSJwRidGSkZNRi9GLy1GLDYtUSIuRidGL0YyRjVGN0Y5RjtGPUY/RmduRmluRi8=Exercise 6.11) What goes wrong if we try to replace the prime LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEicEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= in Theorem 6.2 with a composite number LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic=? Find values of LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEiYkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= and odd LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= which are relatively prime and for which there is a LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEidEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= such that LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYpLUkjbWlHRiQ2JVEiYkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RLCZDb25ncnVlbnQ7RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRLDAuMjc3Nzc3OGVtRicvJSdyc3BhY2VHRkwtSSVtc3VwR0YkNiUtRiw2JVEidEYnRi9GMi1GIzYlLUkjbW5HRiQ2JFEiMkYnRjlGL0YyLyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJy1GNjYtUSJ+RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSYwLjBlbUYnL0ZORlxvLUkobWZlbmNlZEdGJDYkLUYjNiYtRjY2L1EkbW9kRicvJSVib2xkR0YxL0YzUSVib2xkRicvJStmb250d2VpZ2h0R0Zpb0Y7Rj5GQEZCRkRGRkZIRltvRl1vRmhuLUYsNiVRIm5GJ0YvRjJGOUY5LUY2Ni1RIixGJ0Y5RjsvRj9GMUZARkJGREZGRkhGW28vRk5RLDAuMzMzMzMzM2VtRidGOQ== but LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYoLUklbXN1cEdGJDYlLUkjbWlHRiQ2JVEiYkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYlLUkmbWZyYWNHRiQ2KC1JKG1mZW5jZWRHRiQ2JC1GIzYnLUYvNiVRIm5GJ0YyRjUtSSNtb0dGJDYtUSgmbWludXM7RicvRjZRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZNLyUpc3RyZXRjaHlHRk0vJSpzeW1tZXRyaWNHRk0vJShsYXJnZW9wR0ZNLyUubW92YWJsZWxpbWl0c0dGTS8lJ2FjY2VudEdGTS8lJ2xzcGFjZUdRLDAuMjIyMjIyMmVtRicvJSdyc3BhY2VHRmZuLUkjbW5HRiQ2JFEiMUYnRklGMkY1RkktRiM2JS1Gam42JFEiMkYnRklGMkY1LyUubGluZXRoaWNrbmVzc0dRIjFGJy8lK2Rlbm9tYWxpZ25HUSdjZW50ZXJGJy8lKW51bWFsaWduR0Znby8lKWJldmVsbGVkR0ZNRjJGNS8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRictRkY2LVEvJk5vdENvbmdydWVudDtGJ0ZJRktGTkZQRlJGVEZWRlgvRmVuUSwwLjI3Nzc3NzhlbUYnL0ZobkZjcEZpbi1GPjYkLUYjNiYtRkY2L1EkbW9kRicvJSVib2xkR0Y0L0Y2USVib2xkRicvJStmb250d2VpZ2h0R0ZfcUZLRk5GUEZSRlRGVkZYL0ZlblEmMC4wZW1GJy9GaG5GY3EtRkY2LVEifkYnRklGS0ZORlBGUkZURlZGWEZicUZkcUZCRklGSS1GRjYtUSIuRidGSUZLRk5GUEZSRlRGVkZYRmJxRmRxRkk=Exercise 6.12) Find values of LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEiYkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= and odd LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RIn5GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGTEY5which are relatively prime and for which LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYpLUklbXN1cEdGJDYlLUkjbWlHRiQ2JVEiYkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYlLUkmbWZyYWNHRiQ2KC1JKG1mZW5jZWRHRiQ2JC1GIzYnLUYvNiVRIm5GJ0YyRjUtSSNtb0dGJDYtUSgmbWludXM7RicvRjZRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZNLyUpc3RyZXRjaHlHRk0vJSpzeW1tZXRyaWNHRk0vJShsYXJnZW9wR0ZNLyUubW92YWJsZWxpbWl0c0dGTS8lJ2FjY2VudEdGTS8lJ2xzcGFjZUdRLDAuMjIyMjIyMmVtRicvJSdyc3BhY2VHRmZuLUkjbW5HRiQ2JFEiMUYnRklGMkY1RkktRiM2JS1Gam42JFEiMkYnRklGMkY1LyUubGluZXRoaWNrbmVzc0dRIjFGJy8lK2Rlbm9tYWxpZ25HUSdjZW50ZXJGJy8lKW51bWFsaWduR0Znby8lKWJldmVsbGVkR0ZNRjJGNS8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRictRkY2LVEsJkNvbmdydWVudDtGJ0ZJRktGTkZQRlJGVEZWRlgvRmVuUSwwLjI3Nzc3NzhlbUYnL0ZobkZjcEZpbi1GRjYtUSJ+RidGSUZLRk5GUEZSRlRGVkZYL0ZlblEmMC4wZW1GJy9GaG5GaXAtRj42JC1GIzYmLUZGNi9RJG1vZEYnLyUlYm9sZEdGNC9GNlElYm9sZEYnLyUrZm9udHdlaWdodEdGZXFGS0ZORlBGUkZURlZGWEZocEZqcEZlcEZCRklGSS1GRjYtUSIsRidGSUZLL0ZPRjRGUEZSRlRGVkZYRmhwL0ZoblEsMC4zMzMzMzMzZW1GJ0ZJ but for which there is no JSFHLUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEidEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= such that LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYoLUkjbWlHRiQ2JVEiYkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RLCZDb25ncnVlbnQ7RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRLDAuMjc3Nzc3OGVtRicvJSdyc3BhY2VHRkwtSSVtc3VwR0YkNiUtRiw2JVEidEYnRi9GMi1GIzYlLUkjbW5HRiQ2JFEiMkYnRjlGL0YyLyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJy1JKG1mZW5jZWRHRiQ2JC1GIzYmLUY2Ni9RJG1vZEYnLyUlYm9sZEdGMS9GM1ElYm9sZEYnLyUrZm9udHdlaWdodEdGY29GO0Y+RkBGQkZERkZGSC9GS1EmMC4wZW1GJy9GTkZnby1GNjYtUSJ+RidGOUY7Rj5GQEZCRkRGRkZIRmZvRmhvLUYsNiVRIm5GJ0YvRjJGOUY5LUY2Ni1RIi5GJ0Y5RjtGPkZARkJGREZGRkhGZm9GaG9GOQ==