题目
T10.1
a. if Alice has a private key XA = 15,find her public key YA
Y A = α X A m o d q = 5 15 m o d 157 = 79 Y_A = α^{X_A} mod ~q = 5^{15} mod ~157 = 79 YA=αXAmod q=515mod 157=79
int tool(int g,int x, int p){
if(x==0)
return 1;
else{
int result=g;
for(int i=1;i<x;i++){
result = result*g;
result = result%p;
}
while(result<0)
result+=p;
return result;
}
}
int main(){
//T10.1
cout<<tool(5,15,157)<<endl; //result = 79
cout<<tool(5,27,157)<<endl; //result = 65
cout<<tool(65,15,157)<<endl; //result = 78
cout<<tool(79,27,157)<<endl; //result = 78
//T10.2
cout<<tool(8,3,23)<<endl; //result = 6
for(int i=0;i<22;i++)
cout<<tool(5,i,23)<<endl; //from 1 to 22
return 0;
}
b. if Bob has a private key XB = 27,find his public key YB
Y B = α X B m o d q = 5 27 m o d 157 = 65 Y_B= α^{X_B} mod ~q = 5^{27} mod ~157 = 65 YB=αXBmod q=527mod 157=65
c. What is the shared secret key between Alice and Bob?
7 9 27 m o d 157 = 6 5 15 m o d 157 = 78 79^{27}mod~157 = 65^{15}mod~157=78 7927mod 157=6515mod 157=78
T10.2
a. if Bob has a public key YB= 10, what is Bob’s private key
Y
B
=
α
X
B
m
o
d
q
=
10
=
5
X
B
m
o
d
23
Y_B = α^{X_B} mod~q= 10 = 5^{X_B}mod~23
YB=αXBmod q=10=5XBmod 23
得出XB = 3
b. if Alice has a public key YA = 8, what is the shared key K with Bob?
K A B = Y A X B m o d q = 8 3 m o d 23 = 6 K_{AB}=Y_A^{X_B} mod~q = 8^3 mod~23 = 6 KAB=YAXBmod q=83mod 23=6
c.Show that 5 is the primitive root of 23.
所以,5是23的原根!