Hey, I would love to know what each line does in one project that I found. And I would like to ask if someone kind would be able to write documentation for this code? I will be very grateful :)
keys=Sort[Flatten[Table[Prime[i]Prime[j],{i,10,24},{j,i+1,25}]]];
key[k_]:=keys[[k]] (* 1 \[LessEqual] k \[LessEqual] 120 *)
encrypt1[k_,m1_]:=Mod[m1^17,key[k]];
encrypt2[k_,m2_]:=Mod[m2^17,key[k]];
encrypt3[k_,m3_]:=Mod[m3^17,key[k]]
cip1[k_,m1_]:=If[encrypt1[k,m1]<=999,"0"<>ToString[encrypt1[k,m1]],
ToString[encrypt1[k,m1]]];
cip2[k_,m2_]:=If[encrypt2[k,m2]<=999,"0"<>ToString[encrypt2[k,m2]],
ToString[encrypt2[k,m2]]];
cip3[k_,m3_]:=If[encrypt3[k,m3]<=999,"0"<>ToString[encrypt3[k,m3]],
ToString[encrypt3[k,m3]]]
d[k_]:=
1/17
(1+Catch[Do[If[Divisible[1+m EulerPhi[key[k]],17]==True,Throw[m]],
{m,17}]]*EulerPhi[key[k]])
message1[k_,m1_]:=FromCharacterCode[Mod[encrypt1[k,m1]^d[k],key[k]]];
message2[k_,m2_]:=FromCharacterCode[Mod[encrypt2[k,m2]^d[k],key[k]]];
message3[k_,m3_]:=FromCharacterCode[Mod[encrypt3[k,m3]^d[k],key[k]]]
ca[1]=Darker[Green];ca[2]=White;ca[3]=White;
cb[1]=White;cb[2]=Darker[Green];cb[3]=Darker[Green];
cr[1]=White;cr[2]=White;cr[3]=Red;
public=Graphics[{Darker[Green],Thickness[.1],Line[{{.10,0},{.10,-.08}}],
Line[{{.20,0},{.20,-.08}}],Line[{{.10,-.04},{.20,-.04}}],
Circle[{-.1,0},{.07,.1}],Thickness[.15],Line[{{0,0},{.25,0}}],
Text[Style["public key",24,Bold,White],{.13,0}]},
ImageSize->{245,150}];
private:=
Graphics[{Red,Thickness[.1],Line[{{.10,-.04},{.20,-.04}}],
Line[{{.15,0},{.15,-.08}}],Circle[{-.1,0},{.07,.1}],
Thickness[.15],Line[{{0,0},{.25,0}}],
Text[Style["private key",24,Bold,White],{.13,0}]},
ImageSize->{245,150}]
alice[k_,m1_,m2_,m3_,a_]:=
Framed[
Pane[Column[{Text[Style[" Alice",36,Bold,Black]],public,
Text[Style[Row[{key[k]," 17"}],36,ca[a],Bold]],
Text[
Style[Row[{"plaintext: ",
FromCharacterCode[m1],FromCharacterCode[m2],FromCharacterCode[m3]}],36,Bold, ca[a]]]}],{260,350},
ImageSizeAction->"ResizeToFit"]]
bob[k_,m1_,m2_,m3_,a_]:=
Framed[
Pane[Column[{Text[Style[" Bob",36,Bold,Black]],private,
Text[Style[d[k],36,cr[a],Bold]],
Text[Style["ciphertext: ",36,Bold,cb[a]]],
Text[Style[Row[{cip1[k,m1], cip2[k,m2],cip3[k,m3]}],36,
Bold,cb[a]]],
Text[Style[Row[{"message: ", message1[k,m1], message2[k,m2],
message3[k,m3]}],36,Bold,cr[a]]]
}],{260,350},ImageSizeAction->"ResizeToFit"]]
Manipulate[
Grid[{{alice[k,m1,m2,m3,a],Text[Style["\[ShortRightArrow]",64,Bold,Black]] ,
bob[k,m1,m2,m3,a]}}],
{{a,1,"message"},{1->"compose", 2->" send ",3->"decrypt"},ControlType->Setter},
{{k,60,"public key"},1,120,1,ControlType->Slider,ImageSize->Large},
{{m1,88,"three"},Table[n->FromCharacterCode[n],{n,65,90,1}]},
{{m2,89,"letter"},Table[n->FromCharacterCode[n],{n,65,90,1}]},
{{m3,90,"message"},Table[n->FromCharacterCode[n],{n,65,90,1}]},
ControlType->Setter,TrackedSymbols->{k,m1,m2,m3,a},
SaveDefinitions->True]
Attachments: